




  .^~`^',~`^'-_~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,

                        TEMPLO DA ZINE WU TANG CLAN...

                   TIRE SUAS DUVIDAS E MANDE SUGESTOES!

           OS EDITORES DA REVISTA ESTARAO PRONTOS PARA ATENDE - LO

   OBS: DIVULGUEM NOSSA ZINE EM TODOS CANTOS. []'pX_LARVA E CORPORACAO...

  .^~`^',~`^'-_~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,




          

	 ~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,

		      wU tAnG cLaN Z|N3 Corporation

	 ~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,


















                ** - CONTATOS IMEDIATOS.
                00 - DEDICATORIA
                01 - BATE PAPO INICIAL.
                02 - CONCEITOS BASICOS EM LINGUAGEM ASSEMBLY
                03 - CONCEITOS BASICOS EM LINGUAGEM "C"
                04 - CONCEITOS BASICOS EM LINGUAGEM "C++"
                05 - CONCEITOS BASICOS EM LINGUAGEM CLIPPER
                06 - CONCEITOS BASICOS EM LINGUAGEM DELPHI
                07 - CONCEITOS BASICOS EM LINGUAGEM TURBO PASCAL
                08 - CONCEITOS BASICOS EM VISUAL BASIC
                09 - PIADAS... HAHAshhahehe
                10 - RADIO AMADOR!!!
                11 - MUSICA! :))
                12 - DESAFIO
                13 - RECLAMACOES ;((
                14 - AGRADECIMENTOS...Tks ALL
                15 - ERRATAS... :))
                16 - ESPECIAL
                17 - PROCURA - SE
                18 - PROPAGANDAS :))


                           *CONTATOS IMEDIATOS*

Lembrando que para quem quiser entrar em contato com os membros da coorporacao
ou quiserem reclamar ou dar sugestoes ou qquer outra coisa do Zine mande um
e-mail para:
                         zinewutangclan@geocities.com

Agora, para quem quiser pegar o zine por meio das redes de msgs de um FREQ
pela RBT no node:
                       12:1211/56 do magic name WTCZINE

E soh mais uma coisa... lembrando q. a Zine estah hospedada em:
                    www.geocities.com/SiliconValley/Lab/4568/

sendo assim... vamos aas msgs!

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        From: CARLOS E C PIRES           To: WU TANG CLAN CORPORATION

 ->   Legal a idia de fazer um zine, realmente faltam coisas desse tipo.
 ->  Mas gostaria de dar algumas sugestes e fazer crticas construtivas:
   certo, isso eh bom! :))
    
->    1) Mais cuidado com a linguagem - se a idia  passar informaes 
-> com alguma seriedade, o respeito ao portugus deve ser, na medida do 
-> possvel, observado. No que um erro ou outro faam diferena, mas no 
-> custa nada dar uma relida no texto para verificar a ortografia. Seno, 
-> parece que foi escrito em alguns segundos e imediatamente mandado pros 
-> leitores, sem cuidado. E tenho certeza que vcs passaram um bom tempo 
-> fazendo o zine!
  hehehe eh bem por ai... demoramos um pouquinho... mas tudo bem. valeu
  a chamada de atencao.. vamos tentar ser mais rigorosos na questao do
  portugues porem quanto aos acentos, nao podemos fazer nada. a internet
  aceita acento porem na forma TEXTO o usuario que estiver com o linux ou
  o win 3.11 ou outra plataforma qualquer poderah se defrontar com o monstro
  ACENTO este poderah engoli - lo e deixa - lo embaracado! :))

->     2) Na parte de assembler, as informaes esto corretas, mas achei
-> que os iniciantes, sem qualquer noo de programao, tero dificuldades 
-> em acompanhar. Sugiro que, no prximo "captulo", vc coloque um 
-> programinha pra escrever "Ol mundo!" e da explique as diretivas do 
-> assembler (com explicaes simples sobre a segmentao da memria e 
-> pilha), os registradores, a instruo mov, a instruo int e pronto.
  Bom, eu tentei fazer isso ao maximo possivel, porem o zine nao eh apenas
  para iniciantes, eh para pessoas avancadas, e tudo mais... por isso tenho
  q. jogar um pouco para os dois lados, porem valeu o tok. tentei ser o mais
  explicativo possivel! :))

->     3) A seo de piadas rulez :)
 heheh vamos tentar melhora - la cada vez mais!

->     4) Que tal fazer uma interface pro zine, ao invs de lanar o texto
-> puro. Com os conhecimentos que vcs tm, d pra fazer em Pascal, C/C++ ou 
-> at VB, bem simples. D um ar profissional ao zine.
  certo.. bom, esta ideia jah foi dada por outros leitores e estah em
  andamento, porem nao sei se vai ser tao rapidamente, mas algum dia o zine
  vai ter isso! :))

->     5) Faltou dizer qual  a periodicidade.
      hmmm. ai jah eh um graaande problema! pois todos ou trabalham, ou estu-
      dam, etc. ai fica complicado, mas aos poucos a gente vai tentando
      melhorar o tempo de lancamento, mas data exata serah dificil decidir
      alguma..! :((

->     Apenas algumas opinies, mas foi vc quem pediu... :) Continue com o 
-> zine,  inacreditvel o nmero de pessoas que lem e permanecem caladas, 
-> mas esperando ansiosamente os prximos nmeros.
        bom, pedi mesmo!!! hehehe qto maior as criticas, vamos cada vez
        melhorando mais e mais o zine. Eu ia dizer q. era ateh melhor vcs.
        dando dicas pois o zine eh pra vcs. e tal! mas parei e refleti!
        pra vcs. nada... o zine eh NOSSO! ou seja, de vcs. e nosso, pois
        assim como voces aprendem, nohs tbm aprendemos pelo motivo da
        pesquisa ou entao resgatando algo q. nao lembravamos mais, sempre que
        "ensinamos", estamos aprendendo! por isso que nao desanimamos muito
        ao escrever o zine! :))
        Agora quanto ao pessoal q. fica calado. isso eh q. me irrita, po
        a gente faz moh sacrificio e tal, e o pessoal nem fala nada! poxa
        podia mandar uma msg... parabens! ou entao outra ahhh vai se danar
        esse zine eh um lixo! hehehe qquer coisa! :)) mas diga algo! ;))

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
         From: Cleber                     To: WU TANG CLAN CORPORATION

-> Caros caras!
   opa...

-> Eu nem sei aonde, consegui o zine de voces.
   O q. importa eh q. estah com ele! ;))

-> Era algo assim que eu tava precisando! Eu cansei de so ler esses zines
-> hackers que nada explicam de programacao!
   eh.. agora alguns zines comecaram a falar de programacao... porem ainda eh
   pouco precisamos de algo mais dedicado a isso! :))

-> Eu nao sou programador, muito pelo contrario!! Eu a um mes atras
-> comecei a me interessar por programacao. So sei um pouco de Basic, to
-> pegando as manhas com algoritmos e logica com um livro que eu descolei,
   hmmm. legal.. Basic eh digamos que a linguagem mais facil de ser entendida
   e que da origem a diversas outras linguages origem digo no sentido de
   programacao.. quer dizer.. a maioria das linguagens usam de alguma forma
   a estruturacao do Basic!

-> e to aprendendo legal Cobol. Alias, vcs nem citaram o Cobol no e-zine de
-> vcs. Pq? heheh eh realmente cobol eh extremamente velho.
   Bom.. nao foi bem isso... apesar de velho.. nao conseguimos ninguem que
   programasse nessa linguagem e que estivesse afim de escrever no zine,
   porem como disse o zine eh um livro aberto e todos podem fazer parte, 
   basta para isso vontade de participar e escrever akilo que sabe! :)
   se tiver interessado em ajudar na parte de cobol serah bem vindo aa
   corporacao... :))

-> Eu tambem comecei a ver um pouco de Pascal, Clipper e Assembler.
   Isso eh bom...

-> Mas assembler eu desisti, pois eh extremamente complexo aquela merda.
-> baixo nivel sucks.
   Bom.. nao eh bem por ai.. eu adoro assembly.. claro q. ele eh mais
   complexo.. talvez por isso eu gosto dele! ;)) hehe mas tipo eh bom
   saber +/- como ele trabalha, pois sem ele as outras linguagens nao sao
   nada.. tipo mesmo C e bom e tudo mais.. mas se vc. quiser uma melhoria
   em seus programas vc. precisa saber um pouco de ASM pelo menos o basico
   o que nao eh muito complicado e estou tentando mostrar o melhor caminho
   pela zine.. digo melhor, pois foi como aprendi.. claro q. corri atras,
   mas...

-> Pascal e clipper eu dei uma parada, mas vou voltar agora!
   Certo... volte sim... tipo jah q. vc. conhece um pouco das duas...
   experimente o delphi tbm... ele usa uma estruturacao como a do pascal
   com algumas diferencas, mas lembra muito o clipper.. e tem uma ventagem,
   voce pode usar graficos.. por exemplo pode criar um programa que alem de
   cadastrar os clientes, mostre a foto dele por meio de scanners ou cameras.

->  Eu gostaria de pedir pra voces, na parte de radio-amador comecarem
-> desde uma parte mais basica e coisa e tal! Eu nem entendo desses lances,
-> embora eu estude eletronica e meu professor curtia isso.
   certo... bom a parte de radio amador sao mais dicas de modulacao e tal
   o que vc. deve fazer para entrar em uma conversa, como fazer.. etc.
   nao eh nada radical na parte eletronica... quem sabe mais pra frente
   usaremos algo assim....

-> Vou dar um pulo na BBS de vcs! Eu me amarro em bbs. To ate pra montar
-> a minha; so ta faltando tempo e dedicacao. heheh RA eh manero e bacana; mas
-> PCboard da muito trampo!
   eh isso eh realmente... porem eu confesso PCB eh bem melhor q. RA e tipo
   nosso bbs acho q. deu uma parada estamos com falta de tempo($$) heheh
   assim q. conseguirmos um zip-drive o bbs volta.. eh q. as vezes da pane
   nos micros e tal.. e sem o backup do bbs nao dah... cancei de criar
   varias vezes o bbs,ai assim com o zip teremos o backup e tudo voltara
   ao normal! :))

-> Enfim caras, parabens pelo zine  de vcs e continuem fazendo esse
-> trabalho que ta animal! Tomara que vcs consigam fazer rapido o proximo
-> numero, que eu to loco pra aprender mais algumas coisas!
   hehe valeu... mas sei lah.. talvez demore um pouco pois envolve tempo
   e nao o tempo de um soh.. porem o tempo de todos! :)) mas faremos
   o possivel para tentar lancar o mais rapido possivel! :))

->         Falow
->      Obrigado pela atencao
   ok... T+


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    From: Paulo Sergio                     To: WU TANG CLAN CORPORATION

-> valeu !
-> este site me eh util !
 beleza... precisando de algo eh soh avisar!

-> um abraco
  pra vc. tbm!


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   From: Joao Gilberto Magalhaes               To: WU TANG CLAN CORPORATION

-> Achei legal a publicacao de voces. Muito interessante. Quando fizer uma
-> proxima atualizacao colocarei um link para vcs...
   certo.. obrigado pela forca!

-> Agora uma sugestao:
   vamos nessa...

-> 1. Voces precisam divulgar mais o seu trabalho :)
   certo... isso eh verdade.. entramos na rede com pouca potencia, porem ela
   foi ateh q. bem divulgada em bbss de Sao Paulo e espero que o pessoal
   tenha espalhado pelas bbss do Brasil inteiro! :))

-> 2. A internet eh bastante dinamica. Que tal se vcs dividissem a edicao em
-> topicos com HyperLinks? Dessa forma o Leitor poderia ler o assunto
-> especifico do seu interesse. ao inves de um super texto para ser lido de
-> uma vez? Cansa... Apesar de bom...
   certo... bom estamos pretendendo lancar ou nessa ou na numero 3
   um programa q. lerah os textos e mostrah por partes, com isso iremos
   acrescentar alguns caracteres no texto, porem ficarah muito melhor sua
   leitura pois aparecerah menus de escolha e tal... agora qto a internet
   e a divisao ai jah foi feito. Valeu pela dica!

-> 3. Deixem o texto integral apenas na opcao de DownLoad.
   certo, isso tbm. jah foi feito. 

-> Espero que possa ter contribuido com alguma coisa...
   Ok.. valeu pelas dicas! :)) 

-> []s e ate mais em minha home.
   t+...


                  Px_LARVA ESPOLETA
                           EAGLE'S POWER
                                   LaSt^WaRRioR


.~`^'-_!+=/.,~`^'-_!.~`@$^ 01 - BATE PAPO INICIAL .~.~`^'-_!+=/.,~`^'-_!`^'-_!


Bom, Estamos pronto para lancar o segundo numero da nossa Zine que me parece
estar ganhando alguns fans... heheh quer dizer.. alguns leitores! :)) Bom
Algumas pessoas reclamaram de algumas falhas na escrita nao no conteudo mais
nos acentos, nas expressoes... etc... bom... muita coisa.. nao tem acento
mesmo.. pois nao sao todos os leitores que usam Windows ou Dos... cada um tem
sua plataforma... e como em todas as letras(nao os acentos) sao iguais intaum
resolvemos optar por uma leitura melhor da zine! :)) mas tudo bem... isso sao
coisas simples.. :))

                                                          [Eagle's Power]'s

Entao eh isso ai malucada..ehehe como o Eagle jah disse, vamos jogar mais um
pouco de lenha na fogueira pra festa nao acabar... eh dessa maneira eh dessa
forma..eheh tah dodio tha danado mas aI bando de doido, recebemos bastante
incentivos e muitas criticas construtivas tipo: AH SE MATA!!! ehheh brinca-
deira mas recebemos bastante conselhos, e estamos observando que o povo tah
gostando da baguncera...eheh entao beleza que pura danado, vamos queimando
tudo e cada vez mais escrevendo, ou escrevendo tudo e cada vez queimando mais.
eheheheheh.
Estamos muito contente de que tenham lido o Z|N3 e gostado, se nao gostou eu
tenho uma solucao logica..ehehe, vai lendo que voce se acostuma. Malucada
entao vamos arregacar tudo mais tudo por cah BELEZAAAAA!!!
De inicio vou dizendo que vaum ocorrer algumas inovacoes .... com o Z|NE,
vamos dar um aspecto mais profissional pra revista do tipo de um programa
feito para leitura da revista, do tipo tecle ak. para Linguagem 'C' , ak. pra
'sair' ...... etc! e seria bem melhor, pois as materias ficariam separadas e
assim tmb. podemos facilitar a sua leitura..ehhehehhihaihaiiahihaih, entao
deixa eu ver se tem mais alguma coisa pra escrever.. hmmmmmmmmmmmmmmmm ah jah
sei, tem outra coisera q. eu tava esquecendo, tipo eu mais o Fabio Freire,
estamos montando uma parte da Z|N3, na qual seria dedicada aos magrelos....
ehheehehhehe e o que vou adiantando eh o titulo da bagaca..ehehhehehe seria
"OS MAGRELOS II A REVOLTA DA CHIBATADA." (Os dois is(II), nao siguinifica que
eh a segunda versao, eh uma foto minha e do Fabio Freire..ehehehehe, e a parte
da chibatada eu nao sei pq. ohhhh, mas achei que ficaria legal..ehehahihiahha
...mas entao beleza, seria bem assim:
 
                                          "\/"   "\/"
  OS MAGRELOS II A REVOLTA DA CHIBATADA   ./\.     ./\.
 
Hmmmmmm, fugindo do assunto dos magrelos, eu queria dizer que se tiver algum
malucao ai afim de dar uma forca..eeheheh soh dah um toque falora? mas beleza
tudo legal entao, vamos agitar as bagacera agora........comece a ler, mas nao
PARRRRRRRRREEEEEEEEEEEEE !!!!!!!!!!!!! morreu!
 
00霝
t00        Obs.: sua copia eh PIRATA!
t00        ou ocorreu um erro na
                       descompactacao.

                                                        []'pX


                                                       \  os mesmos malucos
                                                       /  da primeira formacao
                                                       \  continuam a bitolar
                  Px_LARVA ESPOLETA                    /  a sua mente, mas uma
                           EAGLE'S POWER               \  coisa eh certa,
                                    LaSt^WaRRioR       /  nenhum de nos ak
                                                       \  tem certeza de nada
                                                       /  entao......
                                                       \  apenas LEIA!
                                                      

.~`^'-_!=+,~`^! 02 - CONCEITOS BASICOS EM LINGUAGEM ASSEMBLY ~`^'-_!+=/.,~`^'*

Operadores Basicos/Avancados

Sintaxe: MOV Destino,Fonte
exemplo: MOV AX,3
Descricao: Move um valor para um registrador ou variavel definida pelo
           programador
Explicacao: AX seria o registrador, e 3 o valor que voce iria colocar em AX
            porem voce pode mover valores entre dois registradores e outras
            coisas, veja alguns exemplos:
            MOV AX,BX
            MOV TESTE,AX
            onde teste eh uma variavel definida por voce(programador)
Simplificacao: O MOV seria a mesma coisa que usar AX=3,TESTE=3, etc...
              

ADD Destino,Fonte     - O comando seria usado na seguinte forma:
                        "ADD ax,bx" ax iria conter na forma mais
                        groceira de se dizer a fonte e o destino..
                        mas como assim!? bom, esse funcao faz o seguinte:
                        Pega o valor de ax e soma com o valor do outro
                        registrador ou numero... ai coloca o resultado
                        no proprio ax. seria o mesmo que:
                        ax = 10, bx = 5, sendo assim, ax=15 pelo simples
                        motivo de (10+5)=15 :))
                        ax=ax+bx
                        ax=10+5
                        ax=15

SUB Destino,Fonte     - O comando seria usado na seguinte forma:
                        "SUB ax,bx" ax sera subtraido com o valor
                        contido em bx, eh o mesmo caso do ADD explicado
                        acima. porem ao inves de somar subtrai....
                        Seria o mesmo que:
                        Digamos que ax = 10, e que bx = 5, sendo assim,
                        ax no final seria igual a 5, pois:
                        ax=ax-bx
                        ax=10-5
                        ax=5

INC destino           - O comando seria usado na seguinte forma:
                        "INC AX"
                        este eh mais simples, apenas soma o registrador
                        com +1, seria o mesmo que:
                        AX=AX+1

DEC destino           - O comando seria usado na seguinte forma:
                        "DEC AX"
                        este eh mais simples, apenas subtrai o registrador
                        com -1, seria o mesmo que:
                        AX=AX-1
                        
AND destino,Fonte     - Conjuncao de operadores Bit a Bit
                        Veja a tabela:

                      Ŀ
                         Fonte     Destino     Saida   
                      Ĵ
                           1          1           1      
                      Ĵ
                           1          0           0      
                      Ĵ
                           0          1           0      
                      Ĵ
                           0          0           0      
                      

                        O operador AND funciona desta forma,
                        sempre que o valor fonte e o valor
                        destino forem 1 o resultado sera 1
                        caso contrario o resultado sera 0.
                        Atencao, ele checa numero por numero
                        mas como!? bom, pelo que sabemos, o
                        assembly trabalha com numeros bina-
                        rios por isso eh complexo, mas para
                        nos ajudar inventaram os numeros de-
                        cimais e hexa.... Bom, mas meso que
                        usamos decimal ou hexa, o assembly
                        trabalha com binario, para isso o
                        compilador converte esse numero que
                        voce usou(caso jah nao esteja) para
                        binario, com isso ele pode trabalhar
                        com os numeros de 1 em 1, veja o exem-
                        plo BINARIO que tambem pode ser usado
                        e eu considero mais simples que os
                        decimais.....
                        MOV AL,01010101b ;lembrando que AL tem 8 bits
                        AND AL,10001011b ;agora vamos ao resultado
                              -----------
                               00000001b ;pronto em al ficaria isso!

OR  Destino,Fonte     - Logico Incluso OR 
                        Veja a tabela:

                      Ŀ
                         Fonte     Destino     Saida   
                      Ĵ
                           1          1           1      
                      Ĵ
                           1          0           1      
                      Ĵ
                           0          1           1      
                      Ĵ
                           0          0           0      
                      

                        O operador OR funciona desta forma,
                        sempre que o valor fonte e o valor
                        destino forem 0 o resultado sera 0
                        caso contrario o resultado sera 1.
                        MOV AL,01010101b ;lembrando que AL tem 8 bits
                        OR  AL,10001011b ;agora vamos ao resultado
                              -----------
                               11011111  ;pronto em al ficaria isso!

XOR                   - OR Exclusivo
                        Veja a tabela:

                      Ŀ
                         Fonte     Destino     Saida   
                      Ĵ
                           1          1           0      
                      Ĵ
                           1          0           1      
                      Ĵ
                           0          1           1      
                      Ĵ
                           0          0           0      
                      

                        O operador XOR funciona desta forma,
                        sempre que o valor fonte e o valor
                        destino forem 0 ou 1 o resultado sera
                        0 caso contrario o resultado sera 1.
                        MOV AL,01010101b ;lembrando que AL tem 8 bits
                        XOR AL,10001011b ;agora vamos ao resultado
                              -----------
                               11011110  ;pronto em al ficaria isso!


NOT                   - Inverte todos os BITS de um BYTE ou WORD
                        exemplo: MOV AL,00001111b
                                 NOT AL
                        a entrada foi 00001111b, logo apos o NOT
                        ficarah: 11110000b
                        simples nao!? mas muito util!

TEST Destino,Fonte     - O comando seria usado na seguinte forma:
                        "TEST ax,10" os dois valores serao testados
                        bit a bit e ao contrario de AND que salva o valor
                        na variavel de destino, ele apenas altera o estado
                        dos FLAGS. Sendo Assim, vc. podera usar os comandos
                        de salto como JMP, JE , etc.. q. veremos mais adiante.

SHR destino,Fonte     - Mudanca aritimetica da direita,
                        divide o numero por Fonte^2, sintaxe:
                        "SHR ax,2" ira dividir ax por 4, pois (2^2=4)

SHL destino,Fonte     - Mudanca aritimetica da esquerda,
                        multiplica o numero por Fonte^2, sintaxe:
                        "SHL ax,2" ira multiplicar ax por 4, pois (2^2=4)

    ķ
     SAL e SAR 
    Ľ

    SAL funciona da mesma maneira que SHL.

        SAR: Ŀ
                 Ŀ      Ŀ
             >                  >Carry
                        
                 msb                lsb

    SAL desloca todos os bits para a direita (o ultimo bit vai para o flag
    carry) e repete o conteudo do antigo ultimo bit (que foi deslocado).

    SAR eh a abreviacao de SHift Arithmetic Right. Sendo um deslocamento
    aritimtico, no poderia se desconsiderar o sinal do dado deslocado
    (dai o motivo de repetir o bit mais significativo!).


    ķ
     RCL e RCR 
    Ľ

        RCL:
           Ŀ
                                                   
               Ŀ     Ŀ    
           ĴCarry<ĳ                  <
                     
                           msb                lsb


        RCR:
            Ŀ
                                                  
               Ŀ      Ŀ  
            >                  >Carry
                      
               msb                lsb

    RCR  e  RCL  rotacionam  o  dado  "passando  pelo  carry".  Isto
significa que o bit  menos  significativo  (no  caso  de  ROR)  ser
colocado  no  flag  de carry e que o contedo antigo deste flag ser
colocado no bit mais significativo do dado.


    ķ
     ROL e ROR 
    Ľ

        ROL:
                          Ŀ
                                                   
                Ŀ    Ŀ    
                Carry<ĳ                  <
                     
                           msb                lsb


        ROR:
            Ŀ
                                     
               Ŀ     Ŀ
            >                  >Carry
                      
               msb                lsb

    Aqui a rotaao e' feita  da  maneira correta...  o flag de carry
apenas indica o ultimo bit que "saiu" e foi para o outro lado...

    A sintaxe dessas instrues  a seguinte:

 Ŀ
   SHL AX,1                                                       
   SHR BL,1                                                       
   RCL DX,CL                                                      
   ROL ES:[DI],CL                                                 
 

    Note que o segundo operando   um contador do nmero de rotaes
ou shifts sero efetuadas.  Nos microprocessadores 80286  em  diante
pode-se usar um valor diferente de 1, no 8088/8086 no pode!

    Repare  tambm  que  podemos  usar  APENAS o registrador CL como
operando da direita se quisermos usar algum registrador!


  Multiplicao:

    Os  processadores  da   famlia   80x86  possuem  instrues  de
multiplicao e diviso  inteiras  (ponto  flutuante fica pro 8087).
Alguns cuidados devem ser tomados quando usarmos  uma  instruo  de
diviso (que ser vista mais adiante!).

    Uma   coisa   interessante   com   a   multiplicao    que  se
multiplicarmos dois registradores de  16  bits obteremos o resultado
necessariamente em 32 bits.   O  par  de  registradores  DX e AX so
usados para armazenar esse nmero de 32 bits da seguinte  forma:  DX
ser a word mais significativa e AX a menos significativa.

    Por exemplo, se  multiplicarmos  0FFFFh  por  0FFFFh  obteremos:
0FFFE0001h (DX = 0FFFEh e AX = 0001h).

    Eis  a  regra  para  descobrir  o  tamanho  do restultado de uma
operao de multiplicao:

                Ŀ
                             A * B = M           
                Ĵ
                    A          B          M    
                Ĵ
                  8 bits     8 bits    16 bits 
                                               
                 16 bits    16 bits    32 bits 
                

    A multiplicao sempre ocorrer entre  o acumulador (AL ou AX) e
um outro operando. Eis a sintaxe das instrues:

 Ŀ
   MUL BL      ; AX = AL * BL                                    
   IMUL CX     ; DX:AX = AX * CX                                 
 

    A primeira instruo (MUL) no considera o sinal dos  operandos.
Neste  caso, como BL  de 8 bits, a multiplicao se dar entre BL e
AL e o resultado ser armazenado em AX.

    A segunda instruo leva  em  considerao o sinal dos operandos
e, como CX  de 16 bits, a multiplicao se dar entre CX e AX  e  o
restultado  ser armazenado em DX e AX.  Lembrando que o sinal de um
nmero inteiro depende do seu bit mais significativo!


  Diviso:

    Precisamos tomar cuidado com a  diviso pelo seguinte motivo: Se
o resultado no couber no  registrador destino, um erro de "Division
by zero" ocorrer  (isto  no  est  perfeitamente  documentado  nos
diversos  manuais  que li enquanto estudava assembly 80x86...  Vim a
descobrir este 'macete' numa  antiga  edio  da revista PC MAGAZINE
americana).  Outro cuidado  com o divisor...  se for 0 o mesmo erro
ocorrer!

    A  diviso  pode ser feita entre um nmero de 32 bits e um de 16
ou entre um de 16 e um de 8, veja a tabela:

                Ŀ
                        A / B = Q e resto       
                Ĵ
                    A          B     Q e resto
                Ĵ
                 32 bits    16 bits   16 bits 
                                              
                 16 bits     8 bits    8 bits 
                

    Assim como na multiplicao  o  nmero  (dividendo) de 32 bits 
armazenado em DX e AX.

    Depois da diviso o quociente  armazenado em AL e o resto em AH
(no caso de diviso 16/8 bits) ou o quociente fica em AX e  o  resto
em DX (no caso de diviso 32/8 bits).

    Exemplo da sintaxe:

 Ŀ
   DIV CX      ; AX=DX:AX / CX, DX=resto                          
   IDIV BL     ; AL=AX / BL, AH=resto                             
 

    O  primeiro  caso  uma diviso sem sinal e o segundo com sinal.
Note os divisores (CX e BL no nosso exemplo).

    Na diviso 16/8 bits o dividendo  armazenado  em  AX  antes  da
diviso... No caso de 32/8 bits DX e AX so usados...

    Mais  um  detalhe:  Os  flags,  depois  de  uma multiplicao ou
diviso no devem ser considerados.


obs: o AX eh apenas exemplo vc. pode usar outros registradores inclusive os
     definidos e criados por voce.. seria mais uma ilustracao no caso! :)
     note tambem que AX eh substituido apenas uma vez, como no exemplo:
     AX=AX+BX
     AX=1+2
     ai voce me pergunta.. por que isso!? sendo que quando aprendi a
     substituir valores na escola a gente sempre trocava todos os valores
     identicos!? bom.. a resposta eh simples, pois o computador precisa
     guardar em algum lugar o valor do resultado e o valor sera guardado
     no registrador de destino, no caso o AX :))

nota: as explicacoes sobre os comandos DIV,IDIV,MUL,IMUL,SAL,SAR,ROL,ROR,RCL
      e RCR. foram retirados do tutorial da RBT,o autor eh Frederico Pissarra,
      sendo assim,todos os creditos para esses 10 comandos sao dados a ele! :)

aqui vai um programinha simples em duas versoes para imprimir na tela uma msg!
jah o segundo eh mais complexo e usa o segmento de video e tal...

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..corte aqui..<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Oi      Segment                  ; Inicia o segmento oi! :))
        assume cs:oi,ds:oi       ; Assume cs e ds como sendo do segmento oi
        org  100h                ; Gera um .COM
comeco: jmp  inicio              ; o Controle Comeca Aqui
msg     db   'Olha Nao eh que escreve mesmo!$'; Msg a ser impressa
inicio: Lea dx,msg               ; Coloca a offset(deslocamento) da msg em
                                 ; DS:DX ou seja, no segmento DS e desloca-
                                 ; mento DX
        mov ah,09h               ; Funcao para imprimir msgs no DOS
        int 21h                  ; INT do DOS
        mov ax,4c00h             ; Retorna ao DOS
        int 21h                  ; INT do DOS
oi ENDS                          ; Final da segmento oi
      END  comeco                ; eh necessario para a conclusao do programa

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..corte aqui..<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
bom, no primeiro programa eu usei a funcao 09h da int 21, essa funcao serve
para imprimir uma msg via DOS eh bem simples veja:

LEA DX,MSG ;neste caso eh necessario colokar em DX o deslocamento de onde se
           ;encontra a msg q. serah impressa, isso eh obrigatorio nesta funcao
MOV AH,09h ;esta eh a funcao
INT 21h ;esta eh a INT
msg  db  'Olha Nao eh que escreve mesmo!$'
         ; no caso estah eh a MSG eu usei
         ; DB pois significa Define Byte, ou seja, isso irah definir o BYTE
         ; q. serah impresso na tela, no caso essa msg inteira entre
         ; 'aspas simples' bom, notem tbm um $ no final da msg isso indica a
         ; funcao 09h q. ela deve interromper a leitura ali, intaum o DX
         ; indica onde comeca a frase e o $ onde termina!

bom, do primeiro exemplo eh soh!

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..corte aqui..<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


codigo segment
       assume cs:codigo,ds:codigo
       org 100h     ; ateh ak. vc. jah conhece!

comeco:
        mov   ax,0B800h ; coloca em ES o segmento de VIDEO no modo colorido!
        mov   es,ax     ; usa - se ES pelo motivo q. este eh o segmento extra
                        ; vc. poderia usar outro como DS, porem DS eh o seg-
                        ; mento de dados e iria dar problema no programa e
                        ; outra a instrucao q. serah usada ira precisar de ES
                        ; entao eh melhor usa - lo!

        mov   di,1004   ; local onde serah impressa a msg
        lea   si,msg    ; indica onde a msg inicia! e coloca em SI
        mov   cx,tam    ; tamanho da msg para nao dar erro, obs: isso serah
                        ; usado com o LOOP pois CX indica qtos loops serao
                        ; feitos!
        mov   ah,0ch    ; estah eh a cor, se quiser ver outra cor, mude ak.
                        ; para outro numero, e vera outra cor, soh nao coloke
                        ; 0(zero) senao nao vera nada! :))
        cld             ; limpa o flag de DIRECAO, ou seja, irah na ordem
                        ; crescente, do comeco ao fim...!

volta:  lodsb           ; le o q. estah no endereco DS:SI e coloka em AL
        stosw           ; le o q. estah em AX e coloka em ES:DI,no caso foi
                        ; usado STOSW pra ler o registrador AX pois colocamos
                        ; em AL o caracter para imprimir em AH a cor para
                        ; ser impressa, por isso STOSW.
        loop  volta     ; faz o loop CX vezes!

        mov   ax,4c00h  ; termina o programa pelo DOS
        int   21h       ; int do DOS

msg     db    'Ola, Este eh o meu teste de Velocidade!'
tam     equ   $-msg ; isto indica o tamanho(LENght para programadores!) da MSG 
              
codigo ends
        end comeco

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..corte aqui..<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
bom, este exemplo eh mais complexo pois mexe com o segmento de video, porem
eh muuito mais rapido e podemos usar cores o q. no exemplo anterior na dava!


ahhhh para compilar estes programas eu sugiro o uso do Turbo Assembly, use:
TASM PROG.ASM
isso irah gerar o .OBJ
TLINK /X/T PROG.OBJ
esse irah gerar o .COM o /X indica q. nao eh para gerar os arquivos .MAP
isso soh enche o HD.... jah a opcao /T indica para gerar o .COM caso voce
queira gerar o .EXE nao use o /T porem nesses exemplos vc. tem q. gerar o
.COM o .EXE usa outras coisas q. nao tem nesses programas!


                                              |EAGLE'S POWER|

.~`^'-_!+=/.,~`^'-_ 03 - CONCEITOS BASICOS EM LINGUAGEM "C" ~`^'-_!+=/.,~`^'-_

Opa, e la vamos nois novamente....eh dessa manera, mas ai malucada, serah q.
oceis intenderam arguma coisa na primeira zina...heheeh espero q. sim oka?
Entao vamos dar continuidade a essa doidera e maravilhosa linguagem.
Pelo que eu percebi ak eu parei na parte de exemplos e tudo mais, e lembro de
ter dito q. eu passaria pra voceis uma tabelinha com os codigos com a barra
invertida do tipo (\n)... pois bem, entao se liga soh nessa tabela ai velho!
 
Ŀ
    CODIGO                       SIGNIFICADO                 
ĳ
                                                             
     \b                       Retrocesso(BS)                 
     \f                       Alimentacao de Formulario(FF)  
     \n                       Nova Linha(LF)                 
     \r                       Retorno do Carro(CR)           
     \t                       Tabulacao Horizontal           
     \"                       "                              
     \'                       '                              
     \0                       Nulo                           
     \\                       Barra Invertida                
     \v                       Tabulacao Vertical             
     \a                       Alerta(BEEP)                   
     \N                       Constante Octal=(n)            
     \xN                      Constante Hexadecimal=(n)      

 
Beleza pura entao....ai foram os codigos de barra invertida, entao agora
espero q. voce comece a prestar atencoes redobradas apartir de agora, pois
comecaremos a ver os operadores.

                         OPERADORES 

Nessa rica linguagem, existem 4 classes de operadores:

      .  ARITIMETICOS
      .  RELACIONAIS
      .  LOGICOS
      .  BIT a BIT
 

            Operadores Aritimeticos 


 

					 |Px_LARVA ESPOLETA|



.~`^'-_!+=/.,!~`^ 04 - CONCEITOS BASICOS EM LINGUAGEM "C++" -_!+=/.,~+`^'-_!*_


.~`^'-_!+=/.,~^'- 05 - CONCEITOS BASICOS EM LINGUAGEM CLIPPER _!+=/.,~`^'-_!.~

  hmmm. como dito na outra edicao nao vou ficar escrevendo novamente o que
  jah foi feito pela CA, os criadores do clipper.. eh o seguinte.. todas
  as funcoes estao perfeitamente explicadas porem... algumas podem causar
  duvidas como muitas q. eu tive... entao... quem quiser alguma funcao do
  clipper 5.2 explicada mais detalhadamente, por favor.. mande msgs. com
  o nome da funcao que deseja explicacao que terei o maior prazer em expli-
  ca - la! :))

  Bom, mas voltando ao clipper em si... tenho algumas dicas sobre como criar
  a sua propria PLL ou se preferir a sua LIB e tudo mais... :))

  1 - Criando sua Propria PLL! :))
      obs: o [ENTER] significa que voce deve apertar a tecla ENTER :))

      no prompt do dos digite:
      RTLINK [ENTER]
      ai ira entrar no RTLINK depois disso digite:
      PRELINK [ENTER]
      ira dar inicio ao script do rtlink onde voce podera criar suas proprias
      PLLs....
      bom apos a inicializacao do script digite:
      OUTPUT MINHAPLL [ENTER]
      esse serah o nome do arquivo que voce criara.
      depois eh necessario indicar ao link-editor(RTLINK) as livrarias(.LIB).
      ex:
      LIB CLIPPER,EXTEND,TERMINAL,DBFNTX [ENTER]
      bom, essas sao as basicas, mas voce pode acrescentar outras que use no
      programa.
      apos isso voce tera que mostrar uma referencia dos comandos/funcoes que
      ira querer em seu programa, como por exemplo:

      obs: REFER significa q. vc. irah associar a PLL aas funcoes usando como
      REFERencia as chamadas basicas das funcoes, como por exemplo _VPOS que
      guarda funcoes como ? ou @10,20 SAY entre outras.... cada uma serve pra
      ua coisa! :)) ahh nao se eskessa do _ no inicio das referencias....

      REFER _VOPS,_VMACRO,_VDB,_DBFNTX [ENTER]
      REFER _VTERM,_VPICT,_GETSYS [ENTER]
      REFER _VDBG [ENTER]

      EXCLUDE ERRORSYS
    o exclude tem a funcao de retirar no caso o ERRORSYS da funcao pois este
    como DEFAULT seria compilado!

    agora uma descricao simples de cada comando:

    PRELINK: Indica ao RTLINK que serah iniciada a Pre-Linkagem de modulos.

    OUTPUT: Indica o nome da biblioteca pre-linkada(PLL)

    LIB: Nome Das livrarias(.LIB) que serao usadas na pre-linkagem.

    REFER: Extrai os modulos e coloca no arquivo PLL

    EXCLUDE: Retira os modulos mencionados da pre-linkagem, no caso foi
             dado como exemplo o errorsys que pode ter vindo com algum
             outro modulo e seja desnecessario!

    agora o exemplo dado acima de um modo mais correto, ou seja, como deveria
    ficar em seu computador!


      RTLINK [ENTER]
      PRELINK [ENTER]
      OUTPUT MINHAPLL [ENTER]
      LIB CLIPPER,EXTEND,TERMINAL,DBFNTX [ENTER]
      REFER _VOPS,_VMACRO,_VDB,_DBFNTX [ENTER]
      REFER _VTERM,_VPICT,_GETSYS [ENTER]
      REFER _VDBG [ENTER]
      EXCLUDE ERRORSYS [ENTER]
      ; [ENTER]

    Bom.. isso seria o que voce escreveria a partir do dos em diante.....
    agora voce pode montar um arquivo .LNK q. tenha tudo isso menos a linha
    RTLINK
    com isso o arquivo poderia ser automaticamente pre-linkado
    por exemplo... crie um arquivo chamado MINHAPLL.LNK e coloke o seguinte:

      PRELINK
      OUTPUT MINHAPLL
      LIB CLIPPER,EXTEND,TERMINAL,DBFNTX
      REFER _VOPS,_VMACRO,_VDB,_DBFNTX
      REFER _VTERM,_VPICT,_GETSYS
      REFER _VDBG
      EXCLUDE ERRORSYS
    pronto agora salve e digite o seguinte:
    RTLINK @MINHAPLL
    pronto ira fazer todos os passos descrito acima de uma unica vez! :))

    ahhh lembrando que o ; eh necessario para se dizer ao link-editor que
    ali acaba sua tarefa e retornar ao DOS! :))

    agora com a PLL pronta, podemos usa - la em nossos programas, com a
    seguinte sintaxe: RTLINK FILE Prog.PRG PLL MINHAPLL.PLL
    pronto. assim irah criar um .EXE muito menor e muito mais veloz...
    porem para a execucao perfeita do programa, eh necessario que o arquivo
    MINHAPLL.PLL esteja no mesmo diretorio do programa, ou pelo - no path!

    
  1 - Criando sua Propria LIB! :))
      Bom.. neste caso eh beeem mais complicado... nos precisamos criar a LIB
      em um outro programa como por exemplo o assembly ou mesmo no clipper
      porem isso nos obrigara a um maior conhecimento... mas eh o seguinte,
      voce cria um arquivo .OBJ com ele vc. compila o seu fonte, por exemplo

      crie um programa com a funcao IMPRIME ex:

      Programa: IMPRIME.PRG
      ? "ISTO EH UM TESTE! :))"

      ai compile o programa com:
      CLIPPER IMPRIME.PRG

      e crie um outro pra executar essa funcao, como
      por exemplo:

      Programa: TESTA.PRG
      IMPRIME()

      ai compile o programa com:
      CLIPPER TESTA

      agora voce estah com dois programas, o primeiro mostra uma frase na
      tela, jah o segundo nao faz absolutamente nada sem o primeiro, entao
      vem a pergunta, certo e agora como eu faco para o segundo funcionar!?
      eh simples... voce usa o rtlink da seguinte forma:
      RTLINK FI TESTA,IMPRIME
      com isso voce terah o arquivo TESTA.EXE porem serah criado a partir
      do IMPRIME.OBJ que na verdade estah fazendo o papel de uma .LIB
      bom... eh isso... :))

      qquer duvida estamos ai! :))


						 |EAGLE'S POWER|


~`^'-_!+=/.,~`^. 06 - CONCEITOS BASICOS EM LINGUAGEM DELPHI ^'-_!+=.~`^'-_!+=/

  Hi there!
  Bom, quero primeiro agradecer a todos q nos escreveram, e pedir para
  que continuem a escrever... Eh disso q precisamos para continuar o Zine.

  Em nossa ultima edicao, vimos um pouco de como trabalhar com o "Ambiente"
  do Delphi, como responder a eventos e mudar propriedades.
  Mas naum vimos muuuito codigo ainda, e bem, a melhor forma de aprender
  a programar eh programando :)
  Intaum tente isto no evento OnCreate de um Formulario em um novo projeto:

    Form1.Caption := 'Wu TanG ClAn ZiN3 eh d+ :)';

  Entendeu? NAO!? Intaum eh o seguinte:
  Isso ai altera a propriedade Caption (o titulo) do Formulario.

  Para alterar qualquer propriedade (desde q nao seja readonly), de qualquer
  objeto (componente, formulario, etc.), vc deve usar o nome do objeto +
  o operador ponto (.) + o nome da propriedade := Um valor qualquer.
  Confuso? Olha soh:

    Form1.Caption := 'Estou aprendendo alguma coisa!'
      |      |                   |
      |      |                    \__ Valor a ser atribuido.
      |       \__ Nome da propriedade.
       \__ Nome do objeto.

  Espero q tenha ficado + claro assim.
  Agora eh soh rodar (F9 - RUN) o programa que voce acabou de gerar.
  Qndo voce roda seu programa dentro do Ambiente Delphi, ele faz o seguinte:
    1. Compila o codigo-fonte Pascal descrevendo o formulario
    2. Compila o arquivo do projeto.
    3. Cria um arquivo executavel (.EXE) vinculando as bibliotecas adequadas
       (Qndo especificado).
    4. Executa o arquivo .EXE, usualmete no modo de depuracao.
  Como vc pode ver, o simples fato do Delphi compilar seu programa ao inves
  de interpreta-lo como a maioria das linguagens, o torna muito + rapido.


  "Tudo vai para algum lugar!"
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-

  Eh isso ai, tudo vai para algum lugar, nada desaparece no Delphi. Toda
  alteracao feita no ambiente visual termina em algum codigo. Nada permanece
  oculto e inacessivel. Embora parte dele possa ser razoavelmente complexa,
  voce pode editar tudo!

  Sabe, uma vez, ao explicar sobre redes a alguns alunos de um curso de
  Hardware, eles me perguntaram: "E pra que eu vou precissar disso?"
  Bom, isso me desanimou totalmente! Odeio explicar as coisas a quem naum
  estah interessado. Lembrei disso porque, bom existe coisas que eu vou
  escrever aki q vc naum vai morrer se naum souber, mas naum custa nada saber,
  alem do +, um dia vc pode precisar saber disso como eu precisei :)

  Vou pedir aos leitores q por favor naum fiquem soh no que aparece aki no
  zine, mas que tambem tentem bolar seus proprios programas, mesmo que nao
  seja mencionado aki. Use os comandos que sao expostos. Se vc for fazer
  1 ou 2 programinhas por mes no Delphi, qndo sair a outra edicao vc jah
  eskeceu tudo!

  Vamos ver o q o Delphi faz pra gente
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

  Mesmo que voce naum entenda tudo isso que se segue, nos precisamos ver o
  que o Delphi criou pra gente quando abrimos um novo projeto/formulario.
  Quando vc inicia um projeto novo, em branco, o formulario vazio tem algum
  codigo associado a ele, com vc pode ver aki:

  unit Unit1;

  interface

  uses
    SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs;

  type
    TForm1 = class(TForm)
    private
       { Private declarations }
    public
       { Public declarations }
    end;

  var
    Form1 : TForm1;

  implementation

  {$R *.DFM

  end.

  O arquivo, nomeado Unit1, usa uma serie de unidades e define um novo tipo
  de dados (uma classe) e uma nova variavel (um objeto daquela nova classe).
  A classe recebe o nome de TForm1 e eh derivada de TForm. A variavel global
  eh Form1, do novo tipo TForm1.

  Pega ai:
   -------------------------------------------------------------------------
   Units sao os modulos em que um programa Pascal eh dividido. Quando inicia
   um novo projeto, voce tem um programa e uma unit. As units sao entao
   compiladas separadamente e vinculadas ao programa principal. Em outras
   palavras, units sao os arquivos de codigo-fonte Pascal indicados pela
   extensao .PAS
   --------------------------------------------------------------------------

  Se vc der um novo nome aos arquivos, o codigo mudara ligeiramente, uma vez
  que o nome da unit deve refletir o nome do arquivo. Se vc der o nome WTC.PAS
  ao arquivo, o codigo iniciara com:

     unit WTC;

  Assim que vc comeca a adicionar componentes, o codigo tambem sera alterado,
  conforme o componente q vc adicione. Por ex. se vc adicionar um botao, o
  codigo tera o segunte trecho alterado:

    type
      TForm1 = class(TForm)
         Button1: TButton;
      private
         { Private declarations }
      public
         { Public declarations }
      end;

  Agora se vc mudar a propriedade Name do botao (usando o Object Inspector)
  para Push_Me, o codigo mudara + uma vez:

    type
      TForm1 = class(TForm)
         Push_Me: TButton;
      private
         { Private declarations }
      public
         { Public declarations }
      end;
    
  Estabelecer outras propriedades que naum sejam o nome naum exerce nenhum
  efeito no codigo-fonte. As propriedades do formulario e seus componentes
  sao armazenados num arquivo de descricao do formulario em separado (com
  uma extensao .DFM).
  Adicionar novos manipuladores de eventos causam maior impacto sobre o
  codigo. Cada vez q vc adiciona um novo manipulador para um evento, uma
  linha eh adicionada a definicao do tipo de dados do formulario, um
  conjunto de metodos vazio eh adicionado a parte de implementacao e algumas
  informacoes sao armazenadas no arquivo de descricao do formulario (.DFM).

  Arquivos de um sistema em Delphi
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

  O delphi, diferentemente de outras linguagens populares para DOS, possui,
  para cada Projeto uma serie de arquivos distintos. Vc deve tomar cuidado
  ao nomear determinados arquivos, pois em alguns deles, o nome do arquivo
  deve refletir um trecho de codigo, como no caso das units e arquivos de
  projeto.

  As extensoes de arquivos Delphi
 --------------------------------------------------------------------------
 Extensao              Tipo de Arquivo      Descricao
 --------------------------------------------------------------------------
 DCU                   Unidade (Unit)       Estes arquivos de objetos sao o
                       compilada            resultado da compilacao de um
                                            arquivo .PAS (e o seu formulario)

 ~DF                   Backup (.DFM)        Backup do arquivo de mesmo nome
                                            .DFM (Descricao do formulario)

 DFM                   Desenvolvimento      Arquivo de descricao do form.
                                            (Em formato binario)

 DOF                   Desenvolvimento      Arquivo c/ as configuracoes
                                            atuais para as opcoes do
                                            projeto. A estensao era .OPT no
                                            Delphi 1.

 ~DP                   Backup (.DPR)        Backup do arquivo do projeto
                                            (veja .DPR abaixo)               

 DPR                   Desenvolvimento      Arquivo do projeto, lista todos
                                            os elementos do projeto e oferece
                                            alguma inicializacao.

 DSK                   Desenvolvimento      Este arquivo contem informacoes
                                            sobre o desktop, como posicao das
                                            janelas e arquivos abertos no
                                            editor, inclusive algumas opcoes
                                            de ambiente

 DSM                   Dados do Object      Armazena inf. do Browser e pode
                       Browser              ser usado para acessar inf. sem  
                                            ter de recompilar o projeto (ou
                                            qndo vc naum puder recompila-lo
                                            por causa de algum erro).

 EXE                   Arquivo executavel   Hummm... Precisa explicar???

 ~PA                   Backup (.PAS)        Backup de arquivos de Units (PAS)
                                            (Veja ref. abaixo)

 PAS                   Codigo fonte da      Codigo fonte de uma Unit Pascal,
                       Unit                 que pode ser o codigo-fonte de um
                                            formulario, ou um arquivo fonte
                                            independente.

 RES                   Recursos compilado   O arquivo binario associado ao
                                            projeto e que contem por padrao,
                                            seu icone. Vc pode adicionar
                                            outros recursos ou outros arq.
                                            deste tipo ao projeto
 ----------------------------------------------------------------------------



  Uma Base muuuuuuuuuuuuuito importante MESMO!
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

  Se vc jah programou em Pascal ou outra linguagem tipada, vc jah sabe o que
  eu vou falar, mas se nao, LEIA, RELEIA ate entender tudo, ateh o ultimo
  detalhe! hehehe Isso aki vc vai usar pro resto da vida.

  Nesta parte, vou falar um pouco dos tipos de dados. Olha soh:

  Dado   | Tipo    | Algoritmo
  -------+---------+----------
  'A'    | Char    | Caracter  \ Alguns livros e professores discordam,
  'AA'   | String  | String    / acho q por nao preverem dados de 1 caracter!
  '1234' | String  | String
  1234   | Integer | Inteiro
  1234.5 | Real    | Real

  Esses ai sao os tipos basicos de dados, todos eles possuem uma faixa, que
  sera mostrada + pra frente.
  Explicando, isso ai, em "Dado" eh soh um exemplo e note as '' nos dados do
  tipo Char e String, eles sao REALMENTE necessarios! Sem os '', o compilador
  "pensa" que isso eh um inteiro ou nome de comando/funcao e vai acusar erro.
  Pra quem naum faz PD, Algoritmo eh:
  "Um conjunto de comandos organizados de maneira logica de forma a garantir
  a sua repetibilidade". Em outras palavras, uma representacao em determinada
  linguagem com suas regras e sintaxes proprias que expressao a logica que
  vc criou para solucionar o problema que o levou a escrever o codigo!
  Esses nomes sao como um "padrao" aki no Brasil. Jah os "Tipos" sao os nomes
  desse "tipo" de dado pro Delphi. Por ex, se vc quiser criar uma variavel,
  que vai "guardar" valores inteiros, vc usa:

  Var
    I : Integer;
        ^^^^^^^ Percebe???

 Agora, anota ai a tabela com as faixas de dados:

 Tipo       |  Faixa                   | Tamanho
 -----------+--------------------------+-------------------------------------
 ShortInt   |  -128..127               | 8-bit Sinalizado
 Integer    |  -32768.. 32767          | 16-bit Sinalizado
 LongInt    |  -2147483648..2147483647 | 32-bit Sinalizado
 Byte       |  0..255                  | 8-bit Nao-sinalizado
 Word       |  0..65535                | 16-bit Nao-sinalizado
 String     |  0..255 Caracteres       | 255 Bytes
 ANSIString |  0..XXX Caracteres       | XXX Bytes <<Versao 2.0 ou superior>>
 Char       |  1 Caracter              | 1 Byte
 -----------'--------------------------'-------------------------------------

 Dica:
  --------------------------------------------------------------------------
  Naum deixe de ler sobre Pascal aki na Zine. Maioria dos comandos do Pascal,
  que nao utilizam a CRT funcionam no Delphi. Por exemplo o FOR no Delphi e
  no Pascal sao identicos, porem o Write no Delphi nao funciona tao simples
  quanto no Pascal ;)
  Assim como o Delay (Use o TTimer!) e outros...
  --------------------------------------------------------------------------

  Wow! Vetores :))
  -=-=-=-=-=-=-=-=-

  Matrizes = Vetores ! :)) Intaum qndo eu escrever vetor/matriz, eh a mesma
  coisa. Se vc jah faz PD e conhece o conceito, pula essa parte e vai
  lah ver como q usa no Delphi :P
  Agora, o q sao matrizes?
  Resposta: Sao uma especie de tabela que vc pode montar na MEMORIA do
  computador.

  Matrizes Unidimencionais
  ------------------------
  Unidimencionais por q so tem uma dimensao (Obvio nao?), ou seja, sao como
  tabelas de apenas uma linha :)

  Olha aki:
  -------------------------------------------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
  -------------------------------------------------------
   01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18

  Imagina q isso ai eh uma variavel, um vetor de hummm... 18 posicoes :)
  Entaum vamo declarar isso:
    Var Matriz : array[1..18] of char;

  O Numero de posicoes pode ser qq coisa ordinal. Agora, digamos q vc queira
  fazer uma matriz de inteiros. Entao eh soh mudar o "char" pra integer oras!
  Mas pra nos aki vamos ficar c/ a de char pra naum conplicar muuuuuuito.
  Agora, veja o q acontece qndo o computador chega a esta linha de codigo:

  Codigo:
    Matriz[5] := 'W';

  Resultado:
    -------------------------------------------------------
    |  |  |  |  | W|  |  |  |  |  |  |  |  |  |  |  |  |  |
    -------------------------------------------------------
     01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18

  O que acontece aki eh q o caracter 'W' vai ser armazenado na posicao 5 da
  matriz. A diferenca entre usar matriz e outras variaves eh o acrescimo do
  [] para indicar as posicoes. Cada posicao eh independente da outra qnto
  ao seu conteudo, como se fossem variaveis diferentes.

  O q vc jah deve ter percebido eh q, se eu usar:
  var Nomes : array[1..2] of string;
  ou criar duas variaves (Nome1 e Nome2) do tipo String vc obtem +/- o mesmo
  resultado.
  Porem existe uma vantagem muuuuito grande em utilizar a matriz :)
  Vc pode, ao inves de utilizar uma constante no indice (ex. Nomes[1]),
  utilizar uma variavel (ex. Nomes[X]) desde q esta variavel seja ordinal,
  e seja controlada para nao ultrapassar a faixa de posicoes da matriz.
  Ex.
    Var Nomes : Array[1..500] of String;
        I : Integer;
 Se eu utilizar I para controlar as posicoes (com: Nomes[I]), o valor de I
 deve: I >= 1 e I <= 500. Ou seja I esta entre 1..500 :))

 Matrizes Multidimensionais
 -=-=-=-=-=-=-=-=-=-=-=-=-=-

 O q eh isso ai??? O eskema eh o seguinte:

 Eh a mesma coisa das matrizes (vetores) normais, soh q tem + de uma dimensao
 e consequentemente + de um indice :))
 hehehe parece confuso??? Eh moh facil (depois de pegar o jeito ;)
 Ex.
    Var Nomes : Array[1..10,5..15] of String;
 Begin
    Nomes[1, 6] := 'Wu TanG ClAn Z|N3';
    ....
    ....
 End.

 Percebe??? Vc simplesmente acrescentou uma dimensao (podem ter muito +).
 Uma coisa deve estar clara eh q Nomes[1,5] e Nomes[1,6] sao distintos e
 podem ter valores diferentes!
 Assim como Nomes[1,5] e Nomes[2,5] podem ter valores diferentes, ou seja,
 sao posicoes diferentes da matriz. Em matrizes de duas dimensoes, vc pode
 trabalhar, pensando em uma tabela normal (linha e coluna), enquanto a de
 3 dimensoes um cubo (linha, coluna e profundidade), jah a de 4 dimensoes eh
 melhor naum tenta imaginar nada fisico pra num fundir a cuca ;))
 Para acrescentar uma dimensao, vc simplesmente poe uma virgula ao final da
 faixa da ultima dimensao e insere uma nova faixa q ira determinar a nova
 dimensao... Olha o ex. que fica + facil de entender:

 {codigo de matriz de uma dimensao}
    Var Nomes : Array[1..5] of String;

 {codigo de matriz de duas dimensoes}
    Var Nomes : Array[1..5,1..9] of String;

 {codigo de matriz de 3 dimensoes}
    Var Nomes : Array[1..5,1..3,1..2] of String;

 E assim por diante...

 Dica:
  ---------------------------------------------------------------------------
  Vc sabia q pode utilizar qq coisa q seja ORDINAL como "range" e indice da
  matriz? Por ex. vc pode declarar uma matriz do tipo:
    Var Msg : Array[False..True] of String;
  Legal neh?? ;) bom, isso eh soh um ex., + pode ter outros tipos ordinais
  dentro dos [] por ex: shortint, longint, integer...
  P.S. Nunca testei c/ char + talvez funcione :) nem q seja [ord(ch)] hehehe
  Hummm se vc num sabe o q eh ord() fica frio q agente vai reservar uma ed.
  soh pra falar de funcoes ;))
  ---------------------------------------------------------------------------

 
 Ops... Tava eskecendo, Eu sou Thiago Correa! + apartir de agora vou assinar
 c/ meu handle (LaSt^WaRRioR). Qq coisa vc pode me encontrar em:

 e-1/2: last.warrior@lords.com
 ICQ..: 5391667
 BBS..: Sercom, Kemek, UnReal e outras ai :)
 ou ainda nas redes de msg como Fido sob o nome de Thiago Correa :))
  
 e naum esquece de dar uma passada na pagina do zine, agora na geocities:
 www.geocities.com/SiliconValley/Lab/4568/
 Se vc quiser mandar um e-1/2 pra zine: zinewutangclan@geocities.com

                                                         |LaSt^WaRRioR|

Bom teoricamente teriamos apenas LaSt^WaRRioR para escrever delphi, porem
notem no texto a seguir uma participacao de uma mina, talvez entrando na
coorporacao.. isso eh questao de conversarmos... porem ai estah sua
contribuicao...
                 ___________________________________________

                           Trabalhando com datas

 Originalmente, na linguagem Turbo Pascal no tnhamos uma varivel prpria
 para guardar uma data. A soluo, no caso do Delphi, foi criar um "tipo"
 chamado TDateTime que conter data e tambm hora. Este tipo de varivel
 ocupar 8 bytes de memria e gravar o ano com 4 algarismos. Para que estas
 informaes (de data e hora) caibam em apenas 8 bytes o sistema grava de uma
 forma codificada. Isto nos obriga a utilizar funes de converso, como
 veremos a seguir. Tecnicamente os dados so gravados no formato ponto
 flutuante, em uma varivel Double.  importante saber que no uso de campos
 data e hora em banco de dados, tanto um campo data, como um campo hora,
 quando acessados pelo Delphi, sero transformados para o formato TDateTime.
 Em outras palavras, se voce tiver em seu banco de dados um campo tipo data
 e outro tipo hora, no Delphi voc ter duas variveis teoricamente do mesmo
 tipo:TDateTime. Note, porm, que apenas o comeo ou o fim da varivel ser
 utilizado pelo sistema em cada caso.

 Funes de Converso para String:

 function DateToStr(Data:TDateTime):String;
  - Converte um TDateTime em uma String
    (pegando apenas a parte da Data desta varivel).
 
 Ex.:Label1.Caption:=DateToStr(Table1Data.Value);
 
 
 function TimeToStr(Hora:TDateTime):String;
  - Converte um TDateTime em uma String
   (pegando apenas a parte da Hora desta varivel).
 
 Ex.: Label1.Caption:=TimeToStr(Table1Time.Value);
 
 function DateTimeToStr(DataAndHora:TDateTime):String;
  - Converte um TDateTime em uma String.
    (pegando a Data e Hora desta varivel).
 Ex.: Label1.Caption:=DateTimeToStr(Now);
 
 
 Funes de Converso para TDateTime:
 
 function StrToDate(Data:String):TDateTime;
  - Converte uma String em um TDateTime.
   (setando apenas a parte da Data desta varivel).
 Ex.: Table1Data.Value:=StrToDate(EditMask1.Text)

 function StrToTime(Hora:String):TDateTime;
  - Coverte uma String em um TDateTime.
    (setando apenas a parte da Hora desta varivel).
 Ex.: Table1Time.Value:=StrToTime(EditMask2.Text0;
 
 function StrToDateTime (DateAndHora:String):TDateTime
  - Converte uma String em um TDateTime.
    (setando Data e Hora desta varivel).
 Ex.:
    var DateAndTime:TDateTime;
    begin
         DateAndTime:=StrToDateTime(Edit1.Text);
         Label1.Caption:=DateTimeToStr(DateAndTime);
 
 
 Retorna o Dia e a Hora Atual:
 
 function DayOfWeek(Data:TDataTime):Integer;
 Ex.:Label1.Caption:=Data e Hora Atual+DateTimeToStr(Now0;
  - Retorna o dia da semana em um inteiro de 1 a 7.
  Sendo:
                ***************
                * 1 - Domingo *
                * 2 - Segunda *
                * 3 - Tera   *
                * 4 - Quarta  *
                * 5 - Quinta  *
                * 6 - Sexta   *
                * 7 - Sbado  *
                ***************

  Ex.:
  Const
         Semana:Array[1..7] of String[3]=(`Dom`, `Seg`, `Ter`, `Qua`, `Qui`, `Sex`, `Sab`);
         { Veremos vetores e constantes logo mais}
         Begin
            Label1.Caption:=`Hoje  um: `+Semana[DayOfWeek(Now)];
         End;

 ****************************************************************************

                        Trabalhando com Vetores

A definio de um vetor deve seguir o seguinte formato:

Varivel: Array[NIni..NFin] of TipoDoVetor;
Ex.:
Var
        DiaDaSemana:[1..7]of String;
        ou
        DiaDaSemana:[0..6]of String;
Uso:
Begin
        DiaDaSemana[2]:=`Tera`;
        I:=4;
        Label1.Caption:=DiaDaSemana[I];
End;

Analise o exemplo abaixo que demonstra o uso de vetores:

Var
 Vet:Array[1..12]of String;
Procedure TForm1.FormCreate(Sender:TObject);
begin
  Vet[1]:=`Janeiro`;
  Vet[2]:=`Fevereiro`;
  Vet[3]:\`Marco`;
end;

procedure TForm1.Button1Click(Sender:TObject);
begin
  Edit2.Text:=Vet[StrToInt(Edit1.Text)];
end;

                                                   |Ana Paula|



.~`^'-_!+=/., 07 - CONCEITOS BASICOS EM LINGUAGEM TURBO PASCAL '-_!+=/.,~`^'-.

    De  acordo  com  observaes feitas por diversos professores, inclusive
    por mim, a maior parte das pessoas ficam ligadas para sempre  primeira
    linguagem que aprenderam, e quando aprendem uma nova linguagem, tm uma
    certa  tendncia  em  desenvolver os algoritmos segundo o vocabulrio e
    regras sintticas da primeira linguagem, so que escritas na nova.

    Este Texto foi extraido de um tutorial de Pascal, Nao sei o porque, mas
    ainda nao consegui identificar o autor, peco desculpas caso ele leia
    um texto dele publicado em outro zine, mas nao pude evitar....
    Bom, soh pra nao perder akeles negocios de autenticidade e tal.., ai vai
    a unica coisa que encontrei sobre o autor no tutorial......
				[]s  lCa 
    Bom, isso ai acima, foi a unica assinatura que encontrei sobre o cara..

    Tipo, agora comentando sobre o fato que foi exposto por ele... tai mais
    um objetivo da zine, proporcionar a novatos uma visao geral sobre as
    linguagens, facilitando assim sua escolha. E outra, como voce tera opor-
    tunidade de conhecer diversas linguagens, quem sabe, nao quebramos essa
    barreira de "a primeira ser a unica" :)))

    Bem.. tudo legal, mas vamos comecar com Pascal "o nao eh que rimo!!!" :))

    Ak. Continua a Aula dois desse belo texto criado pelo cara q. deixou essa
    assinatura ai em cima! :))

III.2.3 - A declarao type

    Alm dos tipos de dados pr-definidos no Turbo Pascal,  podemos  tambm
    definir novos tipos atravs da declarao Type. A sua sintaxe geral :

    Type identificador = (valor1,valor2,valor3,valor4, ... ,valorN);

    O identificador deve seguir as regras  dadas  anteriormente  e entre os
    parentses esto os valores que podem ser assumidos. Exemplos:

    Type
        cor        = (azul,vermelho,branco,verde,amarelo);
        dia_til   = (segunda,tera,quarta,quinta,sexta);
        linha      = string[80];
        idade      = 1..99;

    (* a partir deste instante, alm dos tipos de dados pr-definidos,
       podemos  tambm utilizar os novos tipos definidos cor,dia_til,
       linha e idade *)

    Var
        i       : integer;
        d       : idade;
        nome    : linha;
        dia     : dia_til;
        cores   : cor;

                (* etc. *)

    Observao: Quando damos os valores que os dados podem assumir  atravs
                da declarao type, o Turbo Pascal assume,  automaticamente,
                que o valor da direita vale mais que  o da esquerda e  assim
                por diante. Por exemplo: no caso da definio de cor,amarelo
                vale mais que verde, que por sua vez  vale mais que branco e
                assim por diante.


III.3 - Constantes
        ----------

III.3.1 - A declarao const

    Nesta subrea, podemos definir  tantas  constantes  quantas  quisermos.
    Sintaxe:

    Const
            Meu_nome = 'Thelmo';
            cor_preferida = 'verde';
            nmero_mximo = 24345;

        (* e assim por diante *)

    Toda  vez  que  nos  referirmos   s  constantes  acima, o Turbo Pascal
    substitui-las- pelos seus respectivos valores.


III.3.2 - Constantes pr-definidas

    Existem  algumas constantes pr-definidas e que podemos utiliz-las sem
    ter que declar-las. So elas:

    PI = 3.1415926536E + 00
    FALSE
    TRUE
    NIL                      Pointer nulo, veremos mais adiante.
    MAXINT = 32767


III.3.3 - Constantes tipadas

    A declarao  de   variveis  na  subrea Var, apenas reserva espao de
    memria  para  elas, mas no as inicializa, ou seja, at que se atribua
    valores   a  elas,   seus  valores   sero   desconhecidos.  Sob certas
    circunstncias, seria interessante que pudssemos ao mesmo tempo em que
    declaramos  a  varivel,  dar  seu valor inicial. Isto  possvel com o
    conceito de constante tipada cuja sintaxe :

    Const varivel : tipo = valor;

    Exemplos:

    const Contador : integer = 100;
          c : char = 'A';

    Estamos  definindo  duas  variveis, uma chamada contador que  inteira
    e  vale  inicialmente  100, e outra chamada c que  do tipo char e cujo
    valor inicial  'A'.


III.4 Operadores
      ----------

III.4.1 - Operadores aritmticos

    +   adio
    -   subtrao
    *   multiplicao
    /   diviso entre nmeros reais
    DIV diviso entre nmeros inteiros
    MOD resto da diviso

    (*******************************************************)
       PROGRAMA EXEMPLO : Mostra como utilizar operadores
                           aritmeticos
    ********************************************************)

    Program Operadores_aritimeticos;
    Uses CRT;

    Var    x,y,z : integer;
           r1,r2 : real;

    Begin
       ClrScr;       (* limpa a tela *)
       x:=10;
       y:=20;
       z:=x+y;
       writeln(z);   (* escreve o valor de z na tela de
                        video *)
       x:= 20 DIV 3;
       y:= 20 MOD 3;
       writeln(x);   (* escreve 6 na tela *)
       writeln(y);   (* escreve 2 na tela *)
       r1:=3.24;
       r2:=r1/2.3;
       writeln(r2);
    end.


III.4.2 - Operadores lgicos

    AND     E lgico
    OR      OU lgico
    XOR     OU EXCLUSIVO lgico

    Estes operadores s aceitam como operandos, valores lgicos, ou  seja :
    TRUE e FALSE .

    A operao AND resulta em TRUE se e somente se todos os operandos forem
    TRUE, se um deles ou mais de um for FALSE ento o resultado ser FALSE.

    A operao OR resulta TRUE quando pelo menos um dos operandos for TRUE.

    A operao XOR resulta TRUE quando os operandos forem diferentes  entre
    si, isto , quando um for TRUE o outro dever ser FALSE.

    Exemplo:
    (*******************************************************)
      PROGRAMA UTILIZANDO OS OPERADORES LOGICOS
    (*******************************************************)

    Program operadores_logicos;
    Uses CRT;

    Var x,y : boolean;

    Begin
       x:=TRUE;
       y:=FALSE;
       Writeln( x OR y );         (* escreve TRUE *)
       Writeln( x AND y );        (* escreve FALSE *)
       Weiteln( x XOR y );        (* escreve TRUE *);
    End.

III.4.3 - Operadores relacionais

    O Turbo Pascal possui ao todo 7 operadores relacionais que  so   muito
    utilizados nas tomadas de decises, so eles:

    =       igual
    <>      diferente
    >       maior que
    <       menor que
    >=      maior ou igual que
    <=      menor ou igual que
    IN      testa se um elemento est incluso em um conjunto

    Exemplos:

    1-) Se A=30  e B=50     ento

     ( A = B )      FALSE
     ( A < B )      TRUE

    2-) Se A=TRUE e B=FALSE

     ( A <> B )     TRUE
     ( A = B  )     FALSE

    3-) Se A=50 , B=35, C='A' , D='B'

     ( ( A < B ) OR ( C < D ) )          TRUE

        A  avaliao  ser  verdadeira se   uma  ou  outra  expresso   for
        verdadeira, no caso, como C < D ento a resposta  TRUE


III.4.4 - Operadores entre bits

    Os operadores entre bits s podem ser aplicados em dados dos tipos byte
    ou integer e o resultado  do tipo integer. Eles agem bit a bit e podem
    ser aplicados na notao hexadecimal ou decimal. So eles:

    SHL - SHift Left

    Desloca  n  bits  esquerda. Durante o deslocamento, os bits  esquerda
    so perdidos e dgitos zeros preenchem a posio direita. Exemplos:

    1-) Se X = 00010101 ento

        X shl 2 = 01010100
        X shl 5 = 10100000

    2-) 55 shl 3 = 184

        55 = 00110111  deslocando 3  esquerda ficaria:
        10111000 que  igual a 184

    3-) $F0 shl 2 = $C0

        $F0 = 11110000 deslocando 2  esquerda ficaria:
        11000000 que  igual a $C0

    SHR - SHift Right

    Desloca n bits  direita. Durante o deslocamento,os bits  esquerda so
    preenchidos com zeros e os da direita so perdidos. Exemplos:

    1-) Se X = 10101100 ento

        X shr 3 = 00010101
        X shr 6 = 00000010

    2-) 55 shr 3 = 6

        55 = 00110111 deslocando 3  direita ficaria:
        00000110 que  igual a 6

    3-) $F0 shr 2 = $3C

        $F0 = 11110000 deslocando 2  direita ficaria:
        00111100 que  igual a $3C

    OBS: J sei, vc no manja de base 2, eh eh eh, entonces  complica,  bem
         vou tentar em poucas palavras explicar a base 2. Ns   operamos na
         base 10, porque trabalhamos com 10 algarismos, 0..9, certo? Bem na
         base 2 operamos  somente com 2 algarismos, o 0 e o 1. Dessa forma,
         temos que  representar  todos  os   nmeros  da base 10 utilizando
         somente o 0 e 1.  Parece complicado ? Nem  tanto,  veja  abaixo  a
         correspondncia:

        BASE 10      BASE 2
           0            0
           1            1
           2           10
           3           11
           4          100
           5          101
           6          110
           7          111
           8         1000
           9         1001
          10         1010
          11         1011
         e assim por diante

    Para converter um nmero da base 10 para a  base  2,  basta  dividir  o
    nmero, o qual queremos converter, por dois sucessivamente  at  que  o
    resto seja 0, depois pegamos  os  restos  de  baixo para cima, exemplo:

        (23)    --> (    )
            10            2

    23 / 2 d 11 e sobra 1
    11 / 2 d 5  e sobra 1
     5 / 2 d 2  e sobra 1
     2 / 2 d 1  e sobra 0
     1 / 2 d 0  e sobra 1

    Portanto (23) --> (10111)
                 10          2

    Para coverter da base 2 para a base 10, devemos fazer ao contrrio:

    (10111)  -->  (  )
           2          10


           4  3  2  1  0
        (  1  0  1  1  1 )

               4        3        2        1        0
          1 x 2  + 0 x 2  + 1 x 2  + 1 x 2  + 1 x 2 =
           16    +   0    +   4    +   2    +   1   = 23


    NOT

    O operador NOT nega os bits, isto  os bits iguais a 1 se tornam 0 e os
    bits zero se tornam 1. Devemos lembrar,  no  entanto,   que os inteiros
    possuem 2 bytes, portanto,ao se trabalhar com nmeros decimais inteiros
    ser afetado o byte de mais alta ordem e tambm o sinal. Exemplo:

    NOT (255) = -256

    Para suprimir este problema, voc deve trabalhar com bytes:

    Program Exemplo;
    Uses CRT;

    Var i,j : Byte;

    Begin
       ClrScr;
       i:=255;
       j:=NOT(i);
       Writeln(j);     (* ser escrito 0 *)
    End.


    AND

    Este  operador  realiza  a operao E lgico bit a bit. Relembrando,  a
    operao  E resulta em 1 se e somente se os dois operandos forem iguais
    a 1, caso contrrio, o resultado ser igual a 0. Exemplos:

    1-) $0F AND $F0 = $0 pois
        $0F = 00001111
        $F0 = 11110000
            00001111 AND 11110000 = 00000000

    2-) 255 AND 55 = 55 pois
        255 = 11111111
        55  = 00110111
            11111111 AND 00110111 = 00110111

    3-) 34 AND 76 = 0 pois
        34 = 00100010
        76 = 01001100
            00100010 AND 01001100 = 00000000

    OR

    Este  operador  realiza  a operao OU lgico bit a bit. Relembrando, a
    operao  OU  resulta  em 1 se um ou os dois operandos forem iguais a 1.
    Exemplos:

    1-) $0F OR $F0 = $FF pois
        $0F = 00001111
        $F0 = 11110000
            00001111 OR 11110000 = 11111111

    2-) 255 OR 55 = 255 pois
        255 = 11111111
        55  = 00110111
            11111111 OR 00110111 = 11111111

    3-) 34 OR 76 = 110 pois
        34 = 00100010
        76 = 01001100
            00100010 OR 01001100 = 01101110

    XOR

    Este   operador  realiza  a  operao   OU  EXCLUSIVO lgico bit a bit.
    Relembrando, a operao OU EXCLUSIVO resulta em 1 se os operandos forem
    diferentes entre si . Exemplos:

    1-) $0F XOR $F0 = $FF pois
        $0F = 00001111
        $F0 = 11110000
            00001111 XOR 11110000 = 11111111

    2-) 255 XOR 55 = 200 pois
        255 = 11111111
        55  = 00110111
            11111111 XOR 00110111 = 11001000

    3-) 34 XOR 76 = 110 pois
        34 = 00100010
        76 = 01001100
            00100010 XOR 01001100 = 01101110


III.4.5 - Concatenao

    Esta  operao   representada   pelo  sinal de adio, ou seja, +.  Os
    operandos devem ser do tipo string ou char. Exemplo:

    'Isto  uma ' + 'string' = 'Isto  uma string'

Ŀ
IV - Entrada e sada de dados


IV.1 - Write e Writeln
       ---------------
    Estas  so  as principais procedures destinadas a exibir todos os tipos
    de dados no vdeo. A diferena entre write  e writeln reside no fato de
    que  a  procedure  write escreve o parmetro, e mantm o cursor do lado
    daquilo   que  foi  escrito, enquanto que writeln passa o cursor para a
    prxima linha. Estas procedures possuem 3 formas de sintaxes, a saber:

    Primeira forma:

    Write(parmetro_1,Parmetro_2, ...);

    Exemplo:

    Program Exemplo;
    Uses CRT;
    Var  i : integer;
         r : real;
         c : char;
         s : string[20];

    Begin
       ClrScr;         (* apaga a tela e coloca o cursor em 1,1 *)
       Writeln('Exemplos de aplicacao de writeln e write');
       writeln;   (* apenas pula uma linha *)
       i:=100;
       r:=3.14;
       c:='A';
       s:='interessante';
       writeln('Valor de i e igual a ',i);
       write('valor de r = ');
       writeln(r);
       writeln(c,'   ',s);
    end.

    Este programa resultaria na seguinte tela:

    ---------------------------------------------------------
    Exemplos de aplicacao de writeln e write

    Valor de i e igual a 100
    valor de r =   3.1400000000E+00
    A interessante
    ---------------------------------------------------------

    Segunda forma:

    Write(parmetro : n);

    onde n  um nmero inteiro que determina quantas colunas o cursor  deve
    ser  deslocado  direita, antes do parmetro ser escrito. Alm disso, o
    parmetro  escrito da direita para a esquerda, exemplo:

    Program Exemplo;
    Uses CRT;
    Begin
       Writeln('A');
       Writeln('A':5);
    end.

    Resultaria a seguinte tela:
    ---------------------------------------------------------
    A
    .....A
    ---------------------------------------------------------
    Os pontos representam espaos em branco

    Terceira forma:

    Write(parmetro : n : d);

    Neste   caso,  n   tem  a  mesma funo que o caso anterior sendo que d
    representa o nmero de casas decimais. Obviamente, parmetro  ter  que
    ser do tipo Real. Exemplo:

    Program Exemplo;
    Uses CRT;
    Var r : real;

    Begin
        ClrScr;
        r:=3.14156;
        Writeln(r);
        Writeln(r:10:2);
    End.

    resultaria a seguinte tela:
    ---------------------------------------------------------
    3.1415600000E+00
           3.14
    ---------------------------------------------------------


IV.2 - Read e Readln
       -------------

    Estas   procedures   so   utilizadas  para  fazer leitura de dados via
    teclado. A procedure Read l  um dado do teclado at que se pressione a
    tecla ENTER, sendo que cada tecla digitada  ecoada para o vdeo.  Aps
    pressionarmos   ENTER,  o  cursor   permanecer  no  mesmo lugar. J, a
    procedure Readln faz a mesma coisa s que o cursor passa para a prxima
    linha. A sintaxe geral para estas procedures :

    Read (Var_1,Var_2,Var_3,...);

    Ao  se digitar os valores das variveis pedidas, deve-se separ-los por
    espaos.

    Exemplo 1:

    Program teste;
    Uses CRT;

    Var a,b,c:integer;

    Begin
       clrscr;
       readln(a,b,c);
       writeln (a,' ',b,' ',c);
    end.

    Exemplo 2:

    Program teste;
    Uses CRT;

    Var i : integer;
        r : real;
        c : char;
        s : string[10];

    Begin
       ClrScr;
       Write('Digite um numero inteiro ------> ');
       Readln(i);
       Write('Digite um numero real ---------> ');
       Readln(r);
       Write('Digite um caractere -----------> ');
       Readln(c);
       Write('Digite uma string -------------> ');
       Readln(s);
       Writeln;Writeln;  (* pula duas linhas *)
       Writeln(i);
       Writeln(r);
       Writeln(c);
       Writeln(s);
    End.

    Exemplo 3:

    (*******************************************************)
     PROGRAMA AREA_DE_TRIANGULOS : calcula area de triangulos
    (*******************************************************)

    Program Area_de_Triangulos;
    Uses CRT;

    Var Base,        (* base do triangulo   *)
        altura:      (* altura do triangulo *)
                Real;

    Begin
       ClrScr;
       Writeln('CALCULO DA AREA DE TRIANGULOS':55);
       Writeln;
       Write('Valor da base ------> ');
       Readln(base);
       Writeln;
       Write('Valor da altura ----> ');
       Readln(altura);
       Writeln;
       Writeln;
       Writeln('Area do triangulo = ',base*altura/2 : 10 : 2);
    End.

    ReadKey: L uma tecla do teclado, sem que seja necessrio pressionar  a
             tecla ENTER

    Program Exemplo;
    Uses CRT;
    Var tecla:char;
    Begin
        Write('digite uma tecla ->');
        Tecla:=readkey;
        Writeln;
        writeln('vc digitou ',tecla);
    end.

IV.3 - Impressora
       ----------

    Podemos  enviar  dados para a impressora atravs das procedures Write e
    Writeln.  Para tanto,   devemos  colocar,  antes dos parmetros a serem
    enviados  impressora, o nome lgico LST. Exemplo:

    Writeln('isto vai para o vdeo');
    Writeln(lst,'isto vai para a impressora',' e isto tambm');


IV.4 - Funes e procedures para controle de vdeo
       -------------------------------------------

IV.4.1 - ClrScr

    Esta  procedure tem a finalidade de limpar a tela de vdeo e colocar  o
    cursor na primeira coluna da primeira linha. A tela de vdeo  dividida
    em  80  colunas  e 25 linhas. O canto superior esquerdo tem coordenadas
    (1,1) e o inferior direito (80,25).

IV.4.2 - Gotoxy(x,y)

    Move o cursor para a coluna x e linha y.

    Exemplo:

    Program Exemplo;
    Uses CRT;

    Var x,y : Byte;

    Begin
        ClrScr;
        Gotoxy(10,2);
        Write('Coluna 10 da linha 2');
        x:=40;
        y:=10;
        Gotoxy(x,y);
        Write('Coluna 40 da linha 10');
    End.


IV.4.3 - ClrEol

    Esta  procedure   limpa  desde a posio atual do cursor at o final da
    linha.


IV.4.4 - CrtExit

    Envia   para  a  tela  de   vdeo  a  string de finalizao definida na
    instalao


IV.4.5 - CrtInit

    Envia para  a   tela  de  vdeo  a  string de inicializao definida na
    instalao.


IV.4.6 - Delline

    Procedure   que  elimina   a  linha   em  que  est o cursor. As linhas
    posteriores sobem, ocupando a que foi eliminada.

    Exemplo:

    Program exemplo;
    Uses CRT;
    Begin
        ClrScr;
        Writeln('linha 1');
        Writeln('linha 2');
        Writeln('linha 3');
        Writeln('linha 4');
        Gotoxy(1,2);        (* posicionei o cursor no incio da linha 2 *)
        Delline;
    End.

    O programa anterior ir provocar a seguinte tela:
    ---------------------------------------------------------
    linha 1
    linha 3
    linha 4
    ---------------------------------------------------------
    Repare que a string 'linha 2' foi eliminada.


IV.4.7 - HighVideo

    Coloca o   vdeo   no  modo  normal.   Esta  procedure  equivalente  a
    NormVdeo.


IV.4.8 - InsLine

    Esta procedure faz examente o contrrio de Delline, ou seja, insere uma
    linha na posio atual do cursor.

    Exemplo

    Program Exemplo;

    Begin
        ClrScr;
        Writeln('linha 1');
        Writeln('linha 2');
        Writeln('linha 3');
        Writeln('linha 4');
        Gotoxy(1,3);        (* cursor na 1a. coluna da 3a. linha *)
        InsLine;
        Write('teste');
        Gotoxy(1,20);
    End.

    Este Programa provocar a seguinte tela
    ---------------------------------------------------------
    linha 1
    linha 2
    teste
    linha 3
    linha 4
    ---------------------------------------------------------


IV.4.9 - LowVideo

    Coloca   o  vdeo  em  baixa intensidade at que se execute a procedure
    NormVideo ou HighVideo.


IV.4.10 - NormVideo

    O mesmo que HighVideo


IV.4.11 - TextBackGround

    Esta   procedure   seleciona  a  cor do fundo sobre o qual o texto ser
    escrito. Sua sintaxe geral :

    TextBackGround(cor);

    Tabela de cores

    0   Black   Preto
    1   Blue    Azul
    2   Green   Verde
    3   Cyan    Ciano
    4   Red Vermelho
    5   Magenta Magenta
    6   LightGray   Cinza-claro

    Ns podemos entrar com o nmero ou o nome da cor em ingls

    Exemplo:

    Program Exemplo;
    Uses CRT;

    Begin
        ClrScr;
        WriteLn('teste');
        TextBackGround(7);
        Writeln('teste');
        TextBackGround(Brown);
        Writeln('teste');
    End.


IV.4.12 - TextColor

    Esta procedure permite selecionar a cor com que o texto ser imprimido.

        Tabela de cores

    0   Black   Preto
    1   Blue    Azul
    2   Green   Verde
    3   Cyan    Ciano
    4   Red Vermelho
    5   Magenta Magenta
    6   Brown   Marrom
    7   LightGray   Cinza-claro
    8   DarkGray    Cinza-escuro
    9   LightBlue   Azul-claro
    10  LightGreen  Verde-claro
    11  LightCyan   Ciano-claro
    12  LightRed    Vermelho-claro
    13  LightMagenta    Magenta-claro
    14  Yellow  Amarelo
    15  White   Branco
    16  Blink   Piscante

    Exemplo:

    Program Exemplo;
    Uses CRT;

    Begin
       Clrscr;
       TextBackGround(7);
       TextColor(black);
       writeln('teste');
       TextColor(black+blink);
       write('teste');
    End.


IV.4.13 - Window

    Sintaxe:  Window(x1,y1,x2,y2);

    Esta  procedure  tem o poder de definir uma janela de texto cujo  canto
    esquerdo  superior  x1,y1  e canto inferior direito  x2,y2. Aps esta
    instruo,  as  instrues ClrScr, Write Writeln agem somente dentro da
    janela    recm   definida.  A  instruo  Gotoxy passa a utilizar como
    referencial o ponto x1,y1 que passa a ser considerado 1,1.

    Exemplo:

    Program Exemplo;
    Uses CRT;
    Begin
        Window(10,10,70,20);
        ClrScr;               (* limpa somente a janela *);
        Writeln('teste');     (* escreve 'teste' em 10,10 *)
    End.


IV.4.14 - WhereX

    Funo que retorna o nmero da coluna onde est o cursor.


IV.4.15 - WhereY

    Funo que retorna o nmero da linha onde est o cursor.


IV.5 - Controle do teclado
       -------------------

IV.5.1 - Kbd

    Quando  quisermos  ler dados do teclado e que no sejam ecoados para  o
    monitor   de  vdeo  at  que  sejam processados e aceitos, ns podemos
    utilizar a seguinte sintaxe:

    Read(Kbd,Varivel);

    No  caso  de  nmeros inteiros ou reais, o nmero s ser aceito quando
    pressionarmos  a  tecla <enter>, no  caso  de variveis do tipo char, o
    caractere  ser   aceito  sem  que   seja necessrio pressionar a tecla
    <enter>, idem para o tipo string.

    Exemplo:

    Program Exemplo;
    Uses CRT;
    Var i:integer;

    Begin
        ClrScr;
        Write('Entre com um inteiro --> ');
        Readln(Kbd,i);
        Writeln(i);
    End.


IV.5.2 - BufLen

    Buflen    uma varivel interna pr-definida em Turbo Pascal cujo valor
    inicial  126.Ela contm o nmero mximo de caracteres aceitos por Read.

    Exemplo:

    Program Exemplo;
    Uses CRT;

    Var i : Integer;

    Begin
        ClrScr;
        Writeln(Buflen);    (* escreve 126 *)
        Buflen:=2;
        Write('Digite um inteiro --> ');
        Readln(i);          (* se voc tentar digitar inteiros com
                               mais de dois dgitos,  readln   no
                               permitir *)
    End.


IV.5.3 - Keypressed

    O  identificador  Keypressed   uma funo especial do Turbo Pascal que
    retorna um valor booleano - TRUE se uma tecla foi pressionada, ou FALSE
    caso contrrio. Ela  muito utilizada para detectar teclas pressionadas
    no teclado.

    Exemplo

    Program Exemplo;
    Uses CRT;
    Begin
        ClrScr;
        Write('Pressione uma tecla -> ');
        Repeat until Keypressed; (* repita at que   uma  tecla
                                    seja pressionada. O comando
                                    Repeat Until  ser estudado
                                    mais adiante *)
    End.



.~`^'-_!+=/.,~`^'- 08 - CONCEITOS BASICOS EM VISUAL BASIC -_!+=/.,~.~`^'-_!+=/

 Microsoft Visual Basic 4.0 for Windows 95

 "O Arquivo de Projeto"

 O arquivo de projeto, como default, sempre ter a extenso "*.VBP"
 Um arquivo VBP (Visual Basic Project)  um indice (ou catalogo)
 que armazena as especificaces dos demais componentes (arquivos)
 necessrios para o perfeito funcionamento da aplicaco.
 Os arquivos VBP so sempre armazenados no formato ASCII, permitin-
 do que voc os customize manualmente por meio de um editor padro
 ASCII ou at mesmo crie aplicaces que funcionem como utilitrios
 para gerenciamento dos arquivos de projetos.


 "Componentes de um Projeto"

 'Arquivos de Formulrios (.FRM)'

 Estes arquivos possuem a extenso FRM e, como seu prprio nome j
 diz, armazenam os textos (cdigos e referncias) dos formulrios e
 seus controles, incluindo todos os valores iniciais das proprieda-
 des estabelecidas em tempo de desenho. O arquivo FRM tambm armaze-
 na todas as declaracoes de variveis, constantes, procedures exter-
 nas (do desenvolvedor) ou de enventos.
 
 'Arquivos de Mdulos'
 
 Um arquivo de mdulo possui como padro a extenso BAS. Este compo-
 nente de um projeto devera ser utilizado para a criaco de rotinas
 genricas, declaracoes globais e atributos globais para o ambiente
 do desenvolvimento. Uma rotina, quando declarada dentro de um arqui-
 vo de mdulo, poder ser chamada por qualquer formulrio de projeto.
 No caso de variveis, constantes ou tipos de dados, estes devem ser
 explicitamentes declarados como pblicos por meio da declaraco
 "PUBLIC", caso contrario sua abrangncia ser apenas para o mdulo
 em questo.
 
 'Arquivos de Controles 16 Bits (.VBX)'
 
 Algumas classes de objetos disponveis no Visual Basic 4.0 j esto
 embutidos em sua biblioteca, no entanto no seria possvel desenvol-
 ver algumas tarefas, como por exemplo a programao de uma aplicao
 para comunicacao via modem, utilizando-se apenas os controles inter-
 nos do Visual Basic 4.0. Os arquivos VBX so arquivos de controles
 customizados que permitem aumentar os recursos de diversas classes
 de objetos ou criar novas classes. Sempre que voc utilizar um ou
 mais arquivos de controles, dever adicion-los ao projeto, fazendo
 com que estejam disponveis na caixa de controles e na janela de pro-
 jetos. Dessa forma sempre que voce compilar sua aplicao, eles no
 sero acoplados ao arquivo EXE gerado, obrigando-o a entregar uma c-
 pia dos mesmos ao seu usurio, do contrrio sua aplicao no funcio-
 nar. Esses arquivos esto disponveis somente na verso 16 Bits do
 Microsoft Visual Basic 4.0; para a versao 32 bits voc dever utili-
 zar os arquivos OCX.
 
 'Arquivos de Controles Customizados OLE (.OCX)'
 
 Esta  uma novidade da verso 4.0 do VB. Os arquivos de controles
 customizados OLE possuem a extenso .OCX. Quando voc instala o VB
 4.0, esses arquivos sao copiados para o diretorio \WINDOWS\SYSTEM
 e alguns deles j so embutidos na caixa de controles. Os arquivos
 OCX permitem uma maior flexibilidade no desenvolvimento, j que fun-
 cionam para as verses 16 e 32 Bits. Para cada VBX das versoes ante-
 riores do VB, esta verso traz um OCX compatvel. Este  um padro
 de indstria para controles costumizados, que j esto sendo utiliza-
 dos pelas empresas que desenvolvem produtos auxiliares (Add-Ins)
 para programadores VB.
 
 'Arquivos de Classes (.CLS)'
 
 Os arquivos de classes so semelhantes aos formulrios, s que no
 possuem uma interface visvel. Nos arquivos .CLS, voc poder definir
 seus prprios objetos, cada um com suas propriedades e mtodos. Os
 objetos criados em arquivos .CLS no possuem eventos.
 
 'Arquivos de Recursos (.RES)'
 
 Os arquivos de recursos permitem armazenar diversos dados (textos,
 bitmaps, sons etc.) os quais podem ser alterados sem a necessidade
 de alterao do seu cdigo VB. Para criar arquivo .RES, voc neces-
 sitara utilizar um ambiente de desenvolvimento que possua editor e
 compilador de recursos como o "AppStudio", que est disponvel no
 MS C++.
 
 'Arquivos Externos (Insetable Objects)'
 
 Os arquivos externos geralmente possuem a extenso .EXE e fazem par-
 te de produtos externos ao VB. Esses arquivos permitem criar solues
 integradas com aplicaes.
 
 
 
 "Propriedades"
 
 As propriedades definem as caracteristicas de determinado controle ou
 formulario. Aqui vou mencionar as propriedades mais importantes:
 
 BorderStyle - Esta propriedade permite especificar o estilo da borda.
               Cada controle tem um estilo de borda diferente.
 
 Caption - A maioria dos objetos possui textos de apresentao. No caso
           de formulrios, o texto de apresentao  o ttulo da janela.
           A propriedade Caption permite especificar um texto de apresen-
           tao para o(s) objeto(s) selecionado(s).
 
 Left - Esta propriedade podera ser manipulada movendo-se o formulrio
        horizontemente na tela ou alterando-se o seu valor na janela de
        propriedades. Por meio dela voc poder especificar a posio
        relativa da margem esquerda do formulrio em relao  margem
        esquerda do desktop. Os valores expressos aqui, so especificados
        em TWIPS. Cada polegada tem 1440 TWIPS.
 
 Top - Esta propriedade permite estabelecer a posio vertical do formu-
       lrio na tela. Voc poder alter-la movendo o formulrio vertical-
       mente na tela ou alterando o seu contedo na janela de propriedades.
 
 Height - Permite especificar a altura do formulrio. Sempre que aumenta
          ou diminui a altura do formulrio (manualmente), voc estar
          atribuindo, automaticamente, um novo valor para esta proprie-
          dade.
 
 Width - Igual a propriedade anterior, so que referente a largura de um
         objeto.
 
 Name - Esta propriedade  uma das mais importantes e est disponvel
        para todos os objetos do VB. Por meio dela voc poder atribuir
        um nome para identificar um objeto selecionado dentro do cdigo.
        Como default, cada objeto possui um nome, geralmente o mesmo da
        propriedade Caption.
        Para colocar um nome em um objeto, recomendo que coloque o seguin-
        te prefixo para poder identificar.
        OBJETO                   PREFIXO DO NOME
        Directory List Box       Dir
        Drive List Box           Drv
        File List Box            Fil
        Form                     Frm
        Frame                    Fra
        Grid                     Grd
        Horizontal Scroll Bar    Hsb
        Label                    Lbl
        Line                     Lin
        List Box                 Lst
        Menu                     Mnu
        OLE Client               Ole
        Option Button            Opt
        Picture Box              Pic
        Shape                    Shp
        Text Box                 Txt
        Timer                    Tmr
        Verical Scroll Bar       Vsb
 
 Autosize - Esta propriedade, quando ativada, faz com que o tamanho
            do label seja ajustado conforme o texto de apresentao
            nele inserido.
 
 Sorted - Esta propriedade permite ativar ou desativar a classifica-
          o ascendente automtica dos itens existentes dentro de
          um Combo Box.
 
 ForeColor - Esta propriedade permite especificar a cor a ser utili-
             zada para o texto existente dentro do objeto em questo.
 
 MaxLength - O Texto Box permite a entrada de 65.535 caracteres. Por
             meio dele, podemos especificar um valor mximo de carac-
             teres a serem digitados.
 
 Text - A propriedade Text permite especificar um texto a ser inserido
        dentro do Text Box.
 
 Font - Esta propriedade permite alterar as caractersticas de letras
        que devem ser utilizadas para o texto a ser inserido na caixa
        de texto em questo.
 
 Multiline - Atravs da propriedade Multiline, podemos ativar ou desa-
             tivar o tratamento de mltiplas linhas de textos dentro
             de um Text Box.
 
 ScrollBars - Sempre que trabalharmos com Text Box de forma multili-
              nhas, devemos ativar algum tipo de barras de rolagem,
              permitindo que o usurio percorra rapidamente o texto
              digitado.
 
 
 
 "Sintaxe para Programacao das Propriedades"
 
 Form.Controle.Propriedade = valor
 
 
 
 "Tipos de Dados no VB4"
 
 TIPO            TAMANHO                 PRECISAO/ABRANGENCIA
 Integer         2 bytes                 -32,768 ate 32,767
 Long            4 bytes                 -2,147,483,648 ate 2,147,483,647
 Single          4 bytes                 -3.402823E38 ate -1.401298E-45
                                         1.401298E-45 ate 3.402823E38
 Double          8 bytes                 -1.79769313486231E08 ate
                                         -4.94065645841247E 324
                                         -4.94065645841247E 324 ate
                                         1.79769313486231E308
 Currency        8 bytes                 -922337203685477.5808 ate
                                         922337203685477.5807
 String          1 byte p/caractere      0 ate 65.535 caracteres
                                         0 to 2E32 no sistema 32 bits
 Byte            1 byte                  0 ate 255
 Boolean         2 bytes                 True ou False
 Date            8 bytes
 Object          4 bytes                 Qualquer distncia de um objeto
 Variant         16 bytes+ 1 por carac.  Aceita qualquer um dos acima.
 
 
 Qualquer elemento declarado como Variant poder armazenar qualquer
 um dos tipos de dados apresentados, incluindo objetos e arrays.
 
 
 "Declarando Variaveis"
 
 Existem dois tipos de declarao: as implcitas e as explcitas. Vamos
 estudar as duas, as suas diferenas, etc.
 
 Veja o exemplo a seguir:
 
 ----------------------------------------------------------------------
 Private Sub Command1_Click()
 
   VarTemp1 = 10
   VarTemp2 = 55
   VarTemp3 = 12
 
   Print VarTemp1 + VarTemq2 + VarTemp3
 
 End Sub
 ----------------------------------------------------------------------
 
 Analisando o resultado, vemos que nao corresponde ao real, pois a soma
 deveria resultar em 77 e no em 22 como ocorreu. No entanto, no foi
 emitida nenhuma mensagem de erro de execuo ou sintaxe dificultando
 assim o reconhecimento e correo do cdigo. O que ocorreu  que o
 nome da segunda varivel declarada  VarTemp2 e no VarTemq2, como foi
 digitado na linha de somatria. Para evitar esses problemas, voc dever
 usar as declaraes explcitas. Para voc por uma declarao explcita,
 basta ir no General Declarations, e digitar a seguinte linha: OPTION
 EXPLICIT, ou podera ir no menu Tools, selecionar a opo Options, e na
 caixa de dilogo que estiver escrito "Require Variable Declaration",
 marque com um X. Se voc fizer isso, o exemplo acima no ir funcionar,
 pois o VB ir enviar uma mensagem de erro, como VARIABLE NOT DEFINED.
 
 
 Para voce declarar explicitamente uma varivel, dever utilizar o
 comando Dim. Veja a sintaxe bsica:
 
 DIM nomevariavel AS tipo
 
 'nomevariavel' - Especifica o nome a ser atribuido  varivel
 'tipo' - Especifica o tipo da varivel. Caso no seja especificado, ser
          atribuido a default, que  a Variant.
 
 Uma outra forma de declarar variveis  utilizando os sufixos:
 
 TIPO            SUFIXO
 Integer         %
 Long            &
 Single          !
 Double          #
 Currency        @
 String          $
 
 
 
 Caso voc necessite declarar variveis com o mesmo nome, faa o seguinte:
 
 modulo.NomeVar
 
 'modulo' - Nome do mdulo no qual a varivel est armazenada
 'NomeVar' - Especifica o nome da varivel a ser utilizada.
 
 
 Para voc declarar uma constante, voc dever utilizar o seguinte comando:
 
 Const nomeconst [As tipo] = valor
 
 'nomeconst' - Especifica o nome da constante
 'tipo' - Especifica o tipo de contedo da constante
 'valor' - Especifica o valor armazenado na constante
 
 
 Constantes Pblicas: Devem ser declaradas dentro da rea de declarao dos
 mdulos por meio da sintaxe:
 
 Public Const nomeconst = valor
 
 
 "Arrays de Dados no Microsoft Visual Basic 4.0"
 
 Conceitos
 
 Arrays so colees de variveis que compartilham o mesmo nome e possuem um
 nmero, chamado ndice, o qual permite identificar o elemento que desejamos
 manipular.
 Obrigatoriamente, todos os elementos de um array devero possuir o mesmo
 tipo de dado. Para permitir armazenar diferentes contedos para elementos
 do mesmo array, voc dever cri-lo com o tipo Variant.
 Basicamente, existem dois tipos de arrays: arrays fixos e arrays dinmicos.
 Os arrays fixos tero um tamanho preestabelecido na sua declarao e no
 podero ser alterados no decorrer da execuo do aplicativo. No caso dos
 arrays dinmicos, estes devero ser declarados apenas com o nmero de
 dimenses (colunas) que possuem e o seu tamanho ser definido no decorrer
 da execuo do aplicativo, podendo ser aumentado ou diminudo.
 
 Declarando Arrays Unidimensionais Fixos
 
 A sintaxe utilizada dever ser a seguinte:
 DIM/PUBLIC/PRIVATE nomearray(nelementos) [sufixo] As tipo
 
 nomearray - Especifica o nome que ser utilizado para identificao do
             array.
             A nomenclatura dos arrays segue as regras para nomenclatura das
             variveis
 nelemento - Indica o nmero de elementos que o array dever possuir.
 sufixo - Opcionalmente poder ser utilizado para especificar o tipo do
          array.
 tipo - Dado que ser utilizado para armazenamento dentro dos elementos do
        array. Caso no seja especificado, ser assumido o tipo Variant.
 
 Declarando Arrays Multidimensionais Fixos
 
 Chamamos de arrays multidimensionais os que so declarados com mais de uma
 dimenso, isto e, mais de uma coluna.
 Sintaxe:
 DIM/PUBLIC/PRIVATE nomearray(X1, Y1, X2, Y2, ...) [sufixo] As tipo
 Xn - Indica o nmero de elementos da dimenso (nmero de linhas)
 Yn - Indica o nmero de dimenses (nmero de colunas)
 
 
 Entendendo Procedimentos
 
 Sempre que o usurio efetua uma ao vlida sobre um objeto, este dispara
 uma rotina denominada "procedimento de evento", a qual poder ter vrias
 instrues para serem executadas. Este  um tipo de procedimento, mas
 existem vrios outros:
 -procedimentos da linguagem
 -funes da linguagem
 -procedimentos do usurio
 -funes do usurio
 
 Existem diversos pontos que diferenciam um procedimento de uma funo a
 saber:
 1. Na Chamada:
    A) Quando voc chama um procedimento dentro do seu cdigo, este dever
       obrigatoriamente iniciar a linha de cdigo.
 
       Exemplos vlidos:
       END   'Procedimento da Linguagem
       COMMAND1_CLICK    'Procedimento de Evento
       MEU_PROCEDIMENTO  'Procedimento do Usuario
 
       Exemplos no vlidos:
       DIM VARMEM
       VARMEM = END
       VARMEM = COMMAND1_CLICK
       VARMEM = MEU_PROCEDIMENTO
 
    B) Uma funo sempre dever ser atribuida a uma expresso, isto , nunca
       poder iniciar uma linha de cdigo e sempre dever ser seguida de
       parnteses ("()").
 
       Exemplos vlidos: DIM VARMEM
       VARMEM = STR(10000)   'Funcao da Linguagem
       VARMEM = MINHA_FUNCAO()    'Funcao do Usuario
       IF MINHA_FUNCAO() = 10 THEN ...  'Funcao do Usuario
 
       Exemplos no vlidos:
       STR(10000)MINHA_FUNCAO()MINHA_FUNCAO
 
 2. Na criao:
    A) Um procedimento  sempre criado dentro de um bloco definido pelos co-
       mandos SUB...END SUB, conforme os gabaritos a seguir.
 
       Gabarito para Procedimentos de Eventos:
       SUB OBJETO_EVENTO (lista de argumentos)
          comandos
       END SUB
 
       Gabarito para Procedimentos do Usurio:
       SUB MEU_PROCEDIMENTO (lista de argumentos)
         comandos
       END SUB
 
    B) Uma funo  sempre criada dentro de um bloco definido pelos comandos
       FUNCTION...END FUNCTION, conforme o gabarito a seguir:
       Gabarito para Funes do Usurio:
       FUNCTION MINHA_FUNCAO (lista de argumentos)
         comandos
       END FUNCTION
 
 Uma outra diferenca entre os procedimentos e as funes  que as funes
 sempre retornam valores a sua chamada original.
 
 
 
 "Estruturas Condicionais"
 
 Por meio das Estruturas Condicionais, podemos testar condies e tomar
 decises. Nela podemos usar If, Else, ElseIf, End If, >, <, =, AND, OR.
 If - Se
 Else - Se nao
 ElseIf - Se nao, Se
 >  maior que
 <  menor que
 =  igual a
 AND - e
 OR - ou
 Exemplo:
 ----------------------------------------------------------------------------
 Private Sub Command1_Click()
   Dim Nota As Integer
   Nota = Text1.Text
   If Nota > 10 Then
     MsgBox "Esta Nota  Invalida", 16, "Erro"
   ElseIf Nota = 10 Then
     MsgBox "Parabens! Nota maxima!', 16, "CDF"
   ElseIf Nota < 6 Then
     Msgbox "Nota Horrivel!", 16, "Burro"
   EndIf
 End Sub
 ----------------------------------------------------------------------------
 Traduzindo:
 Ele cria uma varivel chamada "Nota", no qual ser o Text1.Text. Dai a
 pessoa tem que digitar a nota. Quando a pessoa clicar no Command1, e se a
 Nota for maior que 10, aparece uma mensagem como nota invlida, se for 10 a
 nota, aparecer uma mensagem de Parabns. Se for menor que 6, exibir uma
 mensagem que a pessoa foi mal.
 
 Opcionalmente, voc poder usar a estrutura SELECT CASE...END SELECT para
 testar condies. A sintaxe  a seguinte:
 
 Select Case condicao
 [Case expressao -n
    [commandos]]
 [Case Else
    [comandos1]]
 End Select
 
 condicao: Especifica a condio a ser avaliada
 expressao -n: Expresso a ser avaliada e comparada com a condio estabele-
 cida.
 comandos: Grupo de comandos a serem executados se a condio for verdadeira.
 
 
 "Estruturas de Controles de Loopings (Lacos)"
 
 Em alguns trechos de cdigos, voc poder necessitar repetir um bloco de
 comandos um certo numero de vezes ou a partir de condies preestabelecidas.
 Veja a sintaxe:
 
 Do [{While | Until} condicao]
   [comandos]
   [Exit Do]
   [comandos]
 Loop
 
 While: Enquanto
 Until: Ate que
 
 Exemplo:
 
 Private Sub Command1_Click()
   Dim Contador%
   'Fazer Enquanto o Contador for menor ou igual a 2000
   Do While Contador% <= 2000
     Contador% = Contador% + 1
     List1.AddItem "Item" & Str(Contador%)
   Loop
 End Sub
  
 
 Veja o mesmo programa usando o Until
 
 Private Sub Command1_Click()
   Dim Contador%
   Do Until Contador% >= 2000
     Contador% = Contador% + 1
     List1.AddItem "Item" & Str(Contador%)
   Loop
 End Sub
 
 
 A segunda estrutura de looping  o WHILE...WEND que  a mesma coisa que
 DO WHILE...LOOP
 
 A terceira estrutura de looping  um contador acumulador. Veja a sintaxe:
 
 For contador = valor_inicio To valor_final [Step incremento]
   [comandos]
   [Exit For]
   [comandos]
 Next [contador]
 
 Exemplo:
 Dim Contador%
 For Contador% = 0 To 10
   Combo1.AddItem Contador%
 Next 
 Note que o Combo1 ir ter nmeros de 1 a 10.

 ............................................................................
 
 Bom, esta parte de VB foi enviada por um amigo nosso e especialmente coloca-
 do na ZINE, especialmente, pois VB iria ficar sem apoio este mes, porem com
 o envio desse texto, poderemos colocar coisas para este e para o proximo
 numero, ai ateh lah esperamos poder ter alguem jah com a funcao de escrever
 ensinando VB. Entao eh isso ai, a unica coisa que nao sei eh de quem real-
 mente eh esse texto, mas ai... ao autor, parabens pelo texto que estah
 otimo.


                                            T+ [Eagle's Power]'s


.~`^'-_!+=/.,~`^'-_! 09 - PIADAS... Hahahahahahah .~`^'-_!+=/.,~`^'-_!.~`^'-#$


YEH YEH YEHHHH!!!! AHAHAHAHAHHAHA Vamos malucao, sorria, vc. pode nao saber
mas voce esta sendo FILMADO...hihiihihihihhhi nada ve, mas entao beleza q.
pura oh bicho, vamo q. vamo, o zine nao pode para..eeheheheheh bicho vamos
continuar a nos divertir com as piadas ok? tem uns doido por ai oh q. disse
q. as piada ele jah conhecia todas, entao eu respondo: Beleza pura vei, ai
se nao perde tempo lendo ohhh, vai lendo o resto ok?!?!?!
Tipo eh o seguinte malucada espero q. todos colaborem, pois eu nao tenho um
estoque de piada ohhh, mas beleza "DROGAS, CRIMES, TRINTA E OITO NA MAO, PRO-
FISSAO LADRAAAAAAOOOO!!!! viajei, eh q. eu to ouvindo um som ak oh vei, mas
tah dodio tah danado tah pitimbado, vamos da rizada vai....
 
Entao pessoal, vamos nos divertir numa boa certo?
Beleza... Vamos nessa que eh bom a bessa...:)    <-_
                                                    I
     Ueh, isso ak jah tinha na zine anterior...eheh I
 
                                                []'pX_LARVA ESPOLETA

01. O Garoto chega em casa e logo quer saber o por que sua familia morre de
    repente, entao, assim que entra em sua casa corre para sua mae e pergunta:
    Mamae.... Por que eh que todos em nossa familia morrem de repente!?
    ..... Mamae!? ..... Mamae!? ..... Mamaaaaaaaeeeeee..... Xi.... :))

02. Voltando do recreio, Marcelo pede ao professor para ir beber agua, este
    diz que nao, que ele deveria ter ido durente o intervalo.
    apos cinco minutos ele insiste:
    - professor eu preciso muito beber agua, posso?
      o professor diz novamente que nao!
      mais cinco minutos e....
    - mas professor eu estou morrendo de sede... posso ir!?
    - NAO!
      passados outros cinco minutos.
    - professor nao estou aguentando, posso beber agua!?
    - jah disse q. nao. olhe.. pense q. estah com frio q. a sede passa.
      apos cinco minutos Marcelo retorna:
    - professor, o senhor tem um cobertor!? :))

03. Sabe por que o cerebro da mulher fica deste tamanho (.) quando ela morre!?
    porque Dilata! :))

04. Sabe pq. uma loira ficou contente ao montar um quebra cabeca depois de
    2 anos!?, pois na caixa infromava: De 4 a 6 anos! :))

05. Se nao fosse pelas mulheres, ficariamos na Mao! ;))

06. Num asilo de velhos, um ancio se dirigiu a uma colega:
    No podemos ter sexo, mas gostaria de ter algum para segurar o meu pnis,
    no creio que isso faa mal.
    A coleginha aquiesceu e durante dois meses se encontravam para tomar sol
    no terrao, ele tirava a estrovenga e ela pegava.
    Um belo dia ele desapareceu. Ela procurou por toda parte no asilo, e foi
    finalmente encontr-lo no quintal, sentado ao lado de
    outra velhinha, que segurava o seu membro viril. A antiga companheira
    ficou indignada:
    Durante dois meses eu segurei seu pnis sem problema, e agora voc me
    deixa por uma outra. O que ela tem que eu no tenho?
    O velhinho retrucou sorrindo:
    Doena de Parkinson!

07. O pneu do carro do Manuel fura diante de um hospicio. Ele desce e tira as
    porcas da roda, mas elas escorregam para dentro de um bueiro. Um dos in-
    ternos assiste a cena do lado de dentro das grades do manicomio e acon-
    selha ao Manuel:
    Tire uma porca de cada uma das tres rodas para segurar a que ficou solta,
    ate chegar a um posto.
    Fenomenal! Muito boa ideia. Obrigado! Olhe, eu nem sei por que tu estas ai
    dentro.
    Eu estou aqui porque sou doido, nao porque sou burro!

08. Ao vir para o Brasil, o Manuel fica fascinado com a caixa de fosforos e
    resolve mandar uma de presente para a Maria, em Portugar, junto com uma
    carta explicando o seu uso. Dias depois, recebe um telegrama de Maria:
    "Nao funciona". Incredulo, o Manuel comenta:
    - Mas como? Eu testei um por um...

09. O Portugues chegou ao Brasil e veio visitar um amigo seu. Logo apos o
    pouso do aviao, saiu procurando pelo amigo que jah o esperava com sua
    mercedes,logo ao entrar no carro, avistou um negocio na parte da frente
    do carro e perguntou ao amigo o que era akilo!?
    e o amigo respondeu:
  - eh o seguinte... sempre que eu quero acertar alguem, eu miro ali e vou
    em cima da pessoa, ai buUUUUmmm!
  - hmmmm. legal....
    nisso vinha passando uma senhora pela rua... ai o cara acelerou e seguiu
    em direcao a senhora na maior velocidade e dizendo ao Portugues:
  - Veja como funciona...
    e tirando o maior sarro continuou acelerando, ao chegar perto da senhora,
    ele desviou pois sua intencao era de brincar com o amigo, foi quando
    ouviu:
    PLAFT! Parou para olhar e viu a senhora caida, foi quando ia falar e foi
    interrompido pelo portugues:
  - Tu precisas concertar esta mira.... se eu nao abro a porta, tu nunca
    iria acerta - la! :))

10. Por que portugues usam caneta atras da orelha?
    - Pra fazer conta de cabeca.

11. - Por favor! O senhor viu alguem dobrando esta esquina, agora ha pouco? -
      Nao, senhoire. Quando aqui cheguei, ela ja estava dobrada... 

12. Em Lisboa, apos um incendio no pequeno predio, os bombeiros, verificando
    os destrocos, encontram apenas um morto.E justamente o avo do Manuel, que
    estava de cabeca para baixo, com o dedo indicador apontando para um dos
    cantos do ambiente.Ao seu lado, um extintor de incendio, com a seguinte
    instrucao: " Em caso de incendio, vire de cabeca para baixo e aponte
    para a chama".

13. E o Manuel entra com tudo numa contramao. Da azar e eh parado por um
    guarda, no ato:
    - Onde o senhor pensa que vai? - Bem, seu guarda, eu estava a ire ao
      cinema, mas parece que me atrasei. Esta todo mundo a voltaire!

14. No elevador, estao o Manuel e um casal desconhecido. De repente, nosso
    amigo d'alem-mar solta um estrondoso pum. O outro, claro, chia:
    - O senhor nao tem vergonha? Fazer isso na frente de minha mulher?
    - Oh! Desculpe! Eu nao sabia que era a vez dela.

15. O Manuel presenteia a filha moca com um casaco de pele de raposa prateada.
    Satisfeitissima, ela afaga o presente com as maos comentando:
    - Como pode uma coisa tao maravilhosa vir de um animal tao pequeno, sem
      aparencia, totalmente insignificante...
    - Alto la! Se tu nao queres me agradeceire, va la. Mas tambem nao precisa
      ofendeire!...

16. O Manuel vai visitar um velho navio de guerra. Em um dos compartimentos,
    tropeca numa placa de bronze, onde esta escrito: " Aqui tombou o Almirante
    Barroso". E comenta:
    - Nao eh de admiraire. Eu tambem quase cai aqui!

17. - Comandante Joaquim! Estou a avistaire uma tropa que se encaminha
      diretamente ao nosso forte!
    - Sao amigos ou inimigos, sentinela Manuel?
    - Olha, eu acho que sao amigos. Vem todos juntos... 

18. - Voce sabe porque portugues usa bigode?
    - Nao.
    - Pra ficar parecido com a mae. 

19. - Sabes Joaquim, o doutoire me disse para bebeire um pouco de suco de
      limao depois de um banho quente.
    - E tu bebeste o suco de limao, Manuel?
    - Que nada! Nao consegui nem acabar de bebeire toda aquela agua quente
      do banho!

20. O Manuel e a Maria vao ao jogo de futebol. Chegam superatrasados porque a
    Maria demorou seculos se arrumando. Quando entram no estadio, esta para
    comecar o segundo tempo. O Manuel pergunta a um dos torcedores:
    - Como esta o jogo?
    - Zero a zero.
    - E a Maria:
    - Estas a veire? Chegamos a tempo!

21. O Manuel vai ao Rio de Janeiro. Os amigos o advertem que la os motoristas
     de onibus e taxi costumam voar com seus veiculos. Chegando na Cidade
     Maravilhosa, Manuel pega um taxi:
     - Avenida Brasil, por favoire.
     - Que altura?
     - Se tu fores a mais de dois metros, eu pulo desse troco, o raios! 

22. - O, Maria, estou a morrer de cansaco... Vim correndo atras do onibus e,
      sem nunca o alcancaire, acabei chegando ate aqui... meu consolo e que
      economizei vinte cruzados...
      - Mas tu es burro mesmo, hein, Manuel? Por que nao correste atras de um
        taxi? Terias economizado muito mais!

23. O carro do Manuel enguica e ele vai com o filho ao mecanico. Apos verifi-
    car o motor do velho carro, o mecanico diz:
    - O problema esta no freio. Vou ter que mexer no burrinho.
    O Manuel puxa o garoto para tras e se altera:
    - Nao, senhoire! No garoto ninguem mexe! 

24. O Manuel chega em casa, numa tarde, e da com um pinguim em seu jardim. Sem
    nunca ter visto um antes, ele fica todo atrapalhado, sem saber o que fazer,
    e pede ajuda para um vizinho, que o aconselha:
    - Olha, Manuel, o melhor que voce tem a fazer e leva-lo ao Zoologico.
      No dia seguinte, o vizinho encontra com o Manuel passeando com o pinguim
      levando-o rua abaixo por uma cordinha amarrada no pescoco e se surpreen-
      de:
    - O, Manuel! Aonde voce vai com o bicho! Voce nao o levou ao zoologico
      ontem? - Levei sim e ele adorou. Hoje, estou a leva-lo ao Plycenter.

25. O Manuel se emprega como ajudante numa oficina mecanica. O dono o chama
    para a primeira tarefa:
    - To consertando o pisca-pisca deste carro. Vai la atras e me diz se ta
    funcionando. E o Manuel, olhando com atencao para a lanterna traseira:
    - Ta funcionando, nao ta funcionando, ta funcionando, nao ta funcionando.. 

26. Chega o assaltante, apontando uma arma por debaixo da roupa, e grita pro
    Manuel:
    - Pare!
    - Impare!
    E o assaltante, sem entender nada:
    - Mas eu estou te roubando...
    - Ah! Entao nao brinco mais!

27. - Ora, Manuel! Ate que enfim o quilo do arroz baixou!
    - Afe, Maria? E quantos gramas pesa agora? 

28. O Manuel vai trabalhar de mordomo:
    - Acorda, patrao! Acorda!
    - O que foi? O que foi?
    - Esta na hora do senhoire tomar o remedio para durmire...

29. O Manuel vem dirigindo pela estrada. Uma viatura da policia rodoviaria o
    faz parar e o guarda lhe pede a carta.
    - Carta?
    Ora, mas eu fiquei de lhe escreveire? 

30. A Maria vai ao medico:
    - Ai doutoire! Eu nao consigo dormire. Se durmo virada pra cima, sou
    atacada por forte doire de cabeca. Se viro para um lado, atacam-me os
    rins. Se viro para o outro ataca-me uma doire no baco.
    O que e que eu faco, o doutoire?
    - Porque a senhora nao experimenta dormir de brucos?
    - Porque, ai , me ataca o Manuel!

31. O Manuel faz uma ligacao telefonica:
    - Alo? E da Varig? Por favoire, senhorita, eu queria sabeire o tempo de
      voo Sao Paulo-Lisboa.
      - Um minutinho...
      - Ah! Esta bem, muito obrigado! E desliga o telefone. 

32. - Entao, Manuel, como se tem se sentido com os banhos que lhe receitei?
    - Muito bem, doutoire. So que sinto o corpo um pouco pegajoso.
    - Pegajoso?
    - E, eu acho que e por causa do assucar...
    - Assucar?
    - O senhoire nao mandou tomaire banhos de agua douce? Ora, pois... 

33. O executivo ja esta atrasado para pegar o aviao e toma um taxi que o
    Manuel dirige nas horas de folga. A certa altura, se impacienta:
    - Nao sei por que foram construir o aeroporto tao longe da cidade.
    - E que queriam que ele ficasse bem perto dos avioes, doutoire.

34. O Manuel e a Maria resolvem ir ao Teatro Municipal. Percebendo estarem
    atrasados, o marido pede a mulher que se apresse. Apos muitos retoques,
    a Maria termina de se arrumar e eles se dirigem as pressas para o teatro.
    Ao entrarem, o apresentador esta anunciando:
    - Ouviremos a Quinta Sinfonia de Beethoven.
    Irritado, o Manuel ralha com a Maria:
    - Estas vendo, mulher? Por tua causa perdemos as outras quatro!

35. O Manuel chega no chaveiro e pede:
    - Seria possivel o senhoire abrir a porta do meu carro, pois travou-se
      com as chaves dentro?
    - Pois nao, senhor. Se puder aguardar um instante...
    - Mas seja breve, por favoire. Parece que vai choveire e o meu carro tem
      capota, ora pois!

36. A Maria trabalha como enfermeira, num hospital:
    - Doutoire, o senhor pediu anestesia local, mas ca na caixinha esta
      escrito que ela foi fabricada na Alemanha... 

37. Voce sabe que computador, em qualquer lugar do mundo, tem memoria. Menos
    em Portugal. La, computador tem... uma vaga lembranca. 

38. Pouca gente sabe, mas na epoca da Segunda Guerra os portugueses tambem
    construiram seus campos de concentracao. Num desses campos, um homem eh
    condenado aa morte, por intermedio de gas. O condenado eh levado a um
    quarto, com portas e janelas abertas.
    - Como poderei morrer por intermedio de gas, se aqui tem tanta ventilacao?
    - Cale a boca e fique de pe em cima desse xis, marcado no chao. O cara
      fica. Manuel, o algoz, corta uma corda, e um enorme botijao de gas
      se precipita do teto, em cima da cabeca do condenado. 

39. - Voce sabe quantos portugueses sao necessarios para trocar uma lampada?
    - Nao.
    - Cinco.
    Um sobe na mesa e segura a lampada, os outros quatro rodam a mesa.

40. O amigo do Manuel vai a sua casa e o encontra empurrando uma velha
    geladeira por toda a cozinha. Estranha e pergunta:
    - O Manuel! Que diabo estas a fazeire?
    - E que a danada esta enguicou e eu estou a veire se ela pega no tranco.

41. - Comandante Manuel, o inimigo mandou um aviao de reconhecimento.
    - Entao, mande uma carta de agradecimento.

42. - Voce eh cego de nascenca?
    - Nao, senhoire. So da vista mesmo.

43. O portugues nao aguenta mais ver o ingles contar tanta prosa a respeito
    das grandes invencoes de seus compatriotas. Sr. fulano inventou isso,
    Lord sicrano inventou aquilo. Ate que o ingles mencionou o limpador de
    para-brisa.
    - Alto la! O limpadoire de para-brisa quem inventou foi um portugues!
    E antes que o outro pudesse dizer qualquer coisa:
    - O ingles apenas aperfeicoou a invencao do patricio, botando o limpadoire
      pro lado de fora do vidro!

44. O Manuel compra um assougue. Um dia, chegam gritando em sua casa:
    - Seu Manuel, Seu Manuel! O seu acougue pegou fogo!
    - Ora, nao tem importancia. A carne esta na geladeira... 

45. Ai o Manuel vai no mecanico, de novo:
    - O, gajo! Eu queria consertaire a buzina do meu carro...
    - Tudo bem.
    - ... porque o freio nao esta bom.

46. O Manuel vai a uma festa gran-fina. Ressabiado, com medo de dar algum
    fora, fica observando como os demais convidados se comportam. O jeito
    correto de beber, de comer. Observa alguem ja satisfeito, palitando os
    dentes, com discricao... Mais tarde, o anfitriao, vem cumprimenta-lo:
    - E ai, Manuel? Esta sendo bem servido?
    - Olhe, pa.. Eu nunca comi tao bem! So daqueles palitinhos, que as pessoas
      comem escondido, tapando a boca com as maos, eu ja comi uns quinze... 

47. - Por que piscina de portugues tem agua azul?
    - Porque ele mergulha com a caneta.

48. O Manuel vai ao cinema, a tarde. Entra e nao enxerga um palmo naquele
    escuro. Fica parado, de pe, esperando acostumar a vista. O lanterninha
    vem ajuda-lo. O Manuel ve aquela luz se aproximando, se aproximando...
    e pimba! Pula com tudo no colo de um casalzinho que comia pipocas. Maior
    fuzue, voa pipoca, todo mundo reclama aos berros.
    - Me desculpe, gente! E que se eu nao saio da frente, aquela bicicleta ia
      me atropelaire!

49. - Joaquim! Quando eu tiver pegado no sono, faca o favor de vir apagar a
      luz.
    - Pois nao, patrao! E so o senhoire tocaire a campainha e eu virei
      correndo.

50. O fregues entra no bar do Manuel e le o cartaz afixado na parade: " Pao
    simples: 5 cuzados. Pao com manteiga: 8 cruzados. Pao sem manteiga: 10
    cruzados. Estranha e pergunta:
    - O Manuel, por que o pao sem manteiga nao custa o mesmo q. o pao simples?
    - Porque da mais trabalho, ora! A gente tem que colocaire a manteiga
      depois tiraire!

51. Ha 27 anos o Manuel so frquentava aquele restaurante. De repente, comeca a
    ir ao concorrente, do outro lado da rua. O dono do primeiro estranha e o
    aborda na rua:
    - O Manuel, que foi que houve? Nossas refeicoes nao lhe agradam mais?
    - Nao. Nao ha nada de errado com elas. Estou apenas a obedeceire as
      ordens do meu dentista.
    - Dentista?
    - Exatamente. Quando lhe mostrei os dentes que doiam, ele me mandou passar
      a comeire so do outro lado!

52. Naquele dia ensolarado, Manuel esquece as chaves dentro do carro, apos
    travar a porta. Com um pedaco de arame, atraves do vao de uma das janelas,
    e com o auxilio de Maria, inicia a delicada operacao. E a Maria vai dando
    as indicacoes:
    - Mais a direita, Manuel.. Um poquinho mais para a frente... Falta pouco..
    Isso! Apos retirar as chaves finalmente o Manuel abre a porta do carro.
    E quando a Maria comenta:
    - Ainda bem Manuel! Eu ja nao aguentava mais de caloire aqui dentro! 

53. O Manuel vai pela primeira vez ao cinema. Chega na bilheteria e compra uma
    entrada. Dai a poquinho, volta e pede mais uma. Nao passam mais dois
    minutos, vem comprar outra. A bilheteira chia:
    - Po, meu! Por que voce nao compra todas de uma vez?
    - Nao me culpe, senhorita! E que tem um gajo ali na porta que, toda vez,
      me toma o bilhete e rasga!

bom pessoal eh isso ai... acho q. jah deu para se divertir bastante... entao
eh o seguinte... estas piadas foram enviadas por um novo amigo... quem sabe
ele nao se integre aa coorporacao, porem pediu q. desse seu nome e e-mail,
satizfazendo sua vontade, ai vai....

    Meu E-Mail  Fabrizi@Base.com.br Meu nome  Fabrcio Passos da Costa

beleza!? intaum... eh isso ai....


                  Px_LARVA ESPOLETA
                           EAGLE'S POWER
                                   LaSt^WaRRioR


.~`^'-_!+=/.,~`^'-_!.~`^'-_ 10 - RADIO AMADOR .~`^'-_!+=/.,~`^'-_!.~`^'-_.~`^'


.+~`^'-_!+=/.,~`^'-_!.~`^'-_!.  11 - MUSICA ~`^'-_!+=/.,~`^'-_!-_!+=/.,~`^'-!.

   Bom, como a zine eh livre pra eu escrever o que quiser... vamos nessa!
   Quero falar um pouco sobre "Nenhum de Nos"... eh uma banda senssacional...
   tipo eu nao curtia quer dizer.. nao conhecia a banda..
   conhecia as musicas pois faziam muito sucesso, mas nao sabia q. era deles,
   foi qdo assistindo ao programa H de inverno em Campos de Jordao, vi os
   caras cantando e adivinha qual musica!? isso mesmo... Camila, Camila....
   putz.. essa musica eh animal... ai resolvi comprar um Cd dos caras, nao
   eh q. eles detonam mesmo! :))

             intaum de lambuja vai a letra da Camila, Camila....

                        Depois da ultima noite de festa
                        chorando e esperando amanhecer,
                        amanhecer.
                        As coisas aconteciam
                        com alguma explicacao.
                        com alguma explicacao.
                        Depois da ultima noite de chuva,
                        chorando e esperando amanhecer,
                        amanhecer.
                        As vezes peco a ele que va embora
                        que va embora.
                        Camila, Camila.
                        E eu que tenho medo ateh de suas maos,
                        Mas o odio cega e voce nao percebe.
                        Mas o odio cega.
                        E eu que tenho medo ateh do seu olhar,
                        mas o odio cega e voce nao percebe,
                        mas o odio cega.
                        A lembranca do silencio daquelas tardes.
                        daquelas tardes....
                        Da vergonha do espelho naquelas marcas.
                        naquelas marcas.
                        Havia algo de insano naqueles olhos.
                        Olhos insanos.
                        Os olhos que passavam o dia a me vigiar.
                        a me vigiar.
                        Camila, Camila.
                        E eu que tinha apenas 17 anos,
                        baixava minha cabeca pra tudo.
                        Era assim que as coisas aconteciam.
                        Era assim que eu via tudo acontecer.
                        E eu que tinha apenas 17 anos,
                        baixava minha cabeca pra tudo.
                        Era assim que as coisas aconteciam.
                        Era assim que eu via tudo acontecer.
                        Camila, Camila.
                      

   agora mundando um pouquinho o estilo, vamos ver um pouco de Hip-Hop! :))
   ou se preferir RAP para quem nao sabe o que significa, vamos lah:
   R(Rhythm) - Ritimo
   A(And) - e
   P(Poetry) - Poesia
   uma mistura de Batidas com vocalizacao em forma poetica, ou seja, uso
   de palavras com rima que regem essa composicao musical...

                                                        |EAGLE'S POWER|

                                 HIP - HOP                                    
 
 -  BREAK DANCE NA VEIA!  
 
 Ao contrario do que muita gente imagina, a Break Dance permanece viva,
 evoluindo sempre e tornando-se cada vez mais interessante. Nos EUA, o
 Break vem sendo apresentado em concorridissimos espetaculos de teatro
 e em seminarios universitarios. Por aqui, para nao deixar a peteca cair,
 essa cultura de rua em forma de arte eh apresentada em eventos, em que o
 publico pode tomar conhecimento de tudo da melhor maneira: dancando hip-hop!
 Se existe uma festa que merece o carimbo de "aprovado" nesse estilo, certa-
 mente eh a que acontece no ESPACO SKEMA 1, na avenida Rio Branco, 86, bem
 no centro de Sao Paulo. Imperdivel.
                                        Som Black ano 1  No 1
 
 Comentario: Atencao, caso vc. curta o movimento Break e nao saiba onde
             encontrar, eu vou lhe informar, apareca na estacao Sao Bento
             do metro ou mesmo na estacao Conceicao do metro, eu digo isso,
             pois quando estou livre eu do um pulo por essas quebradas pra
             curtir o movimento... isso eh Hip - Hop na veia VEIO!

 
  2PAC, o IMORTAL 
 
Jah virou rotina. Tupac Shakur continua escandalosamente vivo no mundo da
midia. Em mais um episodio das infindaveis repercussoes da morte do rapper/
ator/ativista/gangsta, apareceu o (ateh entao declarado morto) pai de Shakur,
ou ao menos alguem que se intitula como tal. O nome do distinto cavalheiro eh
Bill Garland, um ex-presidiario nova-iorquino. Mais que depressa ele esta
entrando com um recurso na justica para abocanhar nada mais nada menos do que
a metade da fortuna de 2Pac. Segundo declaracoes de Afeni Shakur(mae de Tupac)
ela nunca soube ao certo quem seria o verdadeiro pai do rapaz, mas quando
ofereceu a Garland a oportunidade de assumir a paternidade, ele se recusou.
Por conta desses e outros motivos, a rede HBO americana esta preparando um
filme sobre o rapper e a atriz Jasmine Guy, amiga do falecido, que esta
fechando patrocinios para fazer um filme sobre Afeni Shakur. Aguardem as
invevitaveis cenas dos proximos capitulos...

                                        Som Black ano 1  No 1

 Comentario: Eu nao poderia deixar vc. na mao e nao lhe passar mais um pouco
             de Hip - Hop, e esta vai pra vc. q. curte um filme Gangsta.
             Eu jah assisti e recomendo a todos vcs. do movimento, bicho o
             filme eh o seguinte: JUICE
             Se nao viu, assista, se jah viu, assista denovo, e dessa vez faca
             uma copia, o q. se ta esperando...eheheh vai fundo malandro...
 
 
 
 RAP NACIONAL (RACIONAIS MC'S) 
 
Aqui vai um pequeno trecho da entrevista q. a revista RACA fez com os manos
da pesada Racionais MC'S...

RACA: Por que Racioanis?

EDY     - Vem de raciocinio neh? Um nome que tem a ver com as letras, que tem
          a ver com a gente. Voce pensa pra falar.
BROWN   - Naquela epoca o rap era muito bobo. Rap de enganar, liga mano? Nao
          forcava a pensar.
BLUE    - Era musica facil.

RACA:  Ja sao oito anos e sao quatro discos, eh isso?

EDY    - Nao, foram dois LP e um mix, agora sai o quarto, Sobrevivendo no
         Inferno.

RACA:  Mas tem um CD coletanea tambem.

EDY    - Isso ai eh coisa da gravadora.
BROWN  - A gente nao lancaria um CD com todas as  musicas junto, sao tres
         fazes diferentes. A gravadora ve o lado comercial da parada.

RACA:  Em uma faze e outra, qual seria a diferenca?

EDY    - Tem diferenca de idade neh mano, se vai crescendo vai mudando o
         pensamento.....

                                                  Px_LARVA ESPOLETA

~`^'-_!+=/.,~`^'-_!.~`^'-_! 12 - DESAFIO(!?) ~`^'-_!+=/.,~`^'-_!-_!+=/.,~`^'-


Bom, este eh o nosso espaco para divulgarmos novos trabalhos e os bons
programadores q. temos pelo Brasil :)))
Iremos lancar dois desafios, o primeiro serah para os programadores em C jah
o segundo eh para aqueles que se identificaram melhor com o assembly......
Na verdade o que queremos eh que nossos caros leitores retribuam o aprendi-
zado, e so assim veremos se vossa senhoria :-) (Hmmmm.falei bonito, hehe)
esta mesmo acompanhando o nosso curso, pois estes desafio serao para benefi-
cio proprio de voces, entao pesso para todos participarem, e o premio para o
ganhador sera...ah sei lah bixo, sera que voce se contentaria apenas com o
seu nome ou seu nick publicado ?
Ai voce me diz:
- Mas que tal uma graninha extra!?!?
- Ta louco mano, se fosse pra ganhar dinheiro se acha que nossa corporacao es-
  taria fazendo esse Z|N3 ? Pra comeco de conversa, gostamos do que fazemos,
  e na verdade queremos ensinar e ao mesmo tempo aprender com voces leitores,
  e se isso nao serviu como consolo, que tal..

  [ESSA ZINE TEM FINS BENEFICIENTES PARA COM O CRIANCA ESPERANCA, PARTICIPE]
       |TA LOCO TA DANADO MEU, VOCE NAO VAI ACREDITAR NISSO VAI? :) |

  Ou poderiamos dizer tambem:

- Ei psit, o da potrona mande sua colaboracao via e-mail(HAHAHA QUE HORRIVEL)

  Para doar 30 conto mande o e-mail para [30@conto.com.br]
  Para doar 60 conto mande o e-mail para [60@conto.com.br]
  Para doar 90 conto mande o e-mail para [90@conto.com.br]
  Para nao doar, noa leia a revista :))))


Percebeu agora porque nao podemos dar um premio para o vencedor do dEsAfIo?
Se nao entendeu eu vou resumir...NAO GANHAMOS NADA EM DINHEIRO FAZENDO A ZINE,
APENAS FAZEMOS PORQUE GOSTAMOS E QUEREMOS ENSINAR AOS OUTROS O QUE SABEMOS, E
AO MESMO TEMPO APRENDER COM VOCES LEITORES... Resumidamente, eh isso! :)))))



					      |Px_LARVA ESPOLETA|


 1 - Desafio Em "C"

  Bicho, eu espero q. nao me decepcionem, entao o desafio eh o seguinte:
  escreva um program em TC, no qual imprima na tela a mensagem:

                   WU TANG CLAN ZIN3 CORPORATION

  Pronto eh soh isso, ahahahahahahahah se vc. conseguir, nao fique muito
  contente, mas se vc. nao conseguir, SE MATEEEEE! BAHHHH
  Mas tipo ai entra a criatividade, se pode pensar, beleza, vou usar soh o
  printf e jah era, mas ai, derrepente vei, se vc. for criativo e fizer um
  baguiu descente malucao do tipo sei lah faca piscar, faca com cores, faca
  ate falar, entao, melhor dizendo, use a cabeca....affffeeee ferro!

  Dica: printf("WU TANG CLAN ZIN3 CORPORATION")

  Se que mais??????...pruuuuuuuuuuu....hahahahahahaah falora bicho...PENSE!
  Ah nao esqueca, manda a fonte e "documentacao" ;))

 2 - Desafio Em Assembly
     Crie um programa que imprima algo na tela em diversas cores e diversas
     vezes....
     isso eh baba tendo em vista as explicacoes e os exemplos do curso...
     agora uma dica... use o comando LOOP para isso, como assim? vou explicar:
     em um programa assembly, se vc. quiser fazer um loop vai precisar saber
     o local do salto ou entao o label(rotulo)!
     tipo... um exemplo disso

              MOV CX,10
     IMPRIME:              ; este eh o LABEL ou se preferir ROTULO
              XOR AH,AH    ; espera uma tecla ser digitada
                           ; o xor eh um truque usado para zerar o registrador
                           ; de uma forma mais simples.. poderia ser
                           ; MOV AH,0
              INT 16h      ; Int da BIOS
              MOV AH,2     ; imprime caracter em DL via DOS
              MOV DL,AL    ; caracter a ser impresso, veja q. coloquei o valor
                           ; de AL pois este serah retornado pela funcao 0 da
                           ; int 16 veja a instrucao acima
              INT 21h      ; Int do DOS
              LOOP IMPRIME ; ak. estah o que queremos fara o LOOP CX vezes
                           ; como assim!? veja q. acima usei o MOV CX,10
                           ; sendo assim ele farah o loop 10 vezes

     obs: os rotulos soh nao podem ser iniciados por numeros e podem conter
          ateh 32 caracteres

 3 - Desafio em Clipper

    Crie um programa que cadastre clientes, altere, e apague, use para isso
    uma ".PLL" criada por voce e use o artificio RTLINK FI prog1,prog2....
    criando assim uma digamos q. livraria(.LIB)

    nao venha me dizer q. nao sabe as funcoes do clipper que eh soh olhar o
    NG.. porem se tiver alguma duvida.. mande msgs! :)) estaremos ajundando
    voce na criacao do seu programa! :))

                                                       |EAGLE'S POWER|
                                                       []'Px_LARVA ESPOLETA


.~`^'-_!+=/.,~`^'-_!.~`^'-_! 13 - RECLAMACOES ;(( .~`^'-_!+=/.,~`^'-_.~`^'-_!~

 Bom as reclamacoes nao foram muitas ainda bem! :)) heheh eh brincadeira
 quem tiver que reclamar.. pode soltar o verbo.. estamos aqui para ouvi - los!
 heheh mas tudo bem... intaum.. agora vao as duas reclamacoes q. recebemos...
 a primeira eh sobre a escrita... bom.. nao sei se poderah ser melhorada..
 porem revisaremos a zine algumas vezes.. mas alguns erros podem passar desa-
 percebidos por nos! :)) jah a outra reclamacao foi sobre alguns exemplos nao
 funcionarem em compiladores para Linux... Bom... sinto muito.. nao temos
 como testar os exemplos em todas plataformas ai vai de cada um para poder
 adapta - la de algum modo.... bom... mas a reclamacao eh valida... e sempre
 que alguma funcao nao funcionar em alguma plataforma que nao seje DOS nem
 WINDOWS, por favor.. nos avisem... soh assim podemos tentar cada vez mais
 melhorarmos a compatibilidade! :))
 Eh isso ai, como o Eagle vem falando ai em cima, vou continuar sobre essa
 parada de RECLAMACAO, jah to de saco cheio...ehehehhhe o povo nao reclama
 de nada pra gente sair no pau....tah doidio tha danado (tDTd), eu tava loco
 pra malucada reclamar, mas ninguem chutou o pau....beleza q. pura, ou ninguem
 ta lendo..ehhehehehahahahahah ou tipo e tal, tal e tipo ....sei lah malucao
 to achando esse pessoal mais loco q. nois ohhh, eh foda....mas hmmmmmmmm
 ........mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
 ...mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
 ..mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
 tava so pensando e aproveitando pra aumentar as linhas da zine....
 ah entao, onde eu parei mesmo....eh o seguinte povo,,,vamu recramar se nao
 agente acha q. ta tudo legar, mas tipo se vc. fala puta maluco esse pX_LARVA
 eh moh imbecil....hihihhihihi nao vai adiantar mutio nao, vo ficar mais
 imbecil ainda.. era soh isso, e se nao gostar...hummmm, se nao, se nao,
 se nao,,,, se nao nao....


                  Px_LARVA ESPOLETA
                           EAGLE'S POWER
                                   LaSt^WaRRioR


..`^'-_!+=^-_!.^-_!@ 14 - AGRADECIMENTOS...Tks ALL~`^'-_!.~`^'-_!+=/.,~`^'-_!.

Como sempre, estarei agradecendo a Deus, bom, muitos nao sao religiosos,
ou cristao ou sei lah, pois eu tbm. nao sou muito fanatico nisso porem esse
Deus que uso eh num sentido superior... akele q. olha por nos! q. nos guia e
tal, nao akele desenhado pela igreja catolica ou outra q. o pessoal sempre
usa, digo Deus num sentido amplo simplificando um ser superior a nos, meros
seres - humanos....
e tbm. quero agradecer a familia, apesar de xiar, estao sempre apoiando! ;))
e agradecer aos leitores, pela forca e tudo mais... estou sentindo q. com essa
zine, estamos conseguindo alcancar nosso objetivo de unir os programadores e
mostrar a forca Brasileira... tipo jah tem uma galera legal participando da
edicao do zine, e queremos ver muuito mais nessa edicao... entao pesso a
todos para espalharem o zine por ai a fora... tipo muitos nao acessam a inet,
porem acessam os bbss, entao quem for de fora de Sao Paulo, favor enviar o
zine pelas bbss por ai a fora, soh assim conseguiremos um maior numero de
leitores e um fortalecimento cada vez maior do zine....
Bom, quero agradecer muito aos leitores que participaram da zine, mandando
correcoes, e-mail, exemplos, e tudo o mais... e agradecimentos especiais
ao Guilherme Manika pela explicacao de como achar o IP de um programa, e
ao Eduardo Carvalho, por alem de ajudar a achar o IP em ASM, tem me dado a
maior forca nessa linguagem, sempre q. nao entendo algo, recorro aa ele! :))
na verdade estamos aprendendo junto, com uma pequena diferenca, ele sabe beem
mais q. eu! :)) heheh mas tudo bem.. estamos ai... e tipo, queria mandar
um agradecimento para uma pessoa muito especial, o nome dela eh Leticia, soh
queria agradecer por ela existir! :))

          hmmm. como sempre.. uma msg especial para reflexao!

 " Eh melhor a lagrima de uma derrota, do que a vergonha de nao ter lutado."

 bom, acho q. eh soh... e tipo, tah faltando mulheres tanto para escrever o
 zine, qto para le - lo! cade as programadoras!?!?!?!??

                                                 t+ [Eagle's Power]'s


..`^'-_!+=^-_!.^-_!^.-_+^-_. 15 - ERRATAS -_.+^-_.~`^'-_!.~`^'-_!+=/.,~`^'-_!.

                opa... correcoes feitas por leitores! :))

         Essa Errata foi feita e enviada por Rafael Caetano......

Qdo vc escreve:

void main() {
	comando;
	...
	comando;
}

Esta definindo a funcao. Prototipos sao as declaracoes que vc escreve
no comeco do programa (geralmente atraves dos headers que vc inclui).
Por exemplo, se vc usa getchar() e potencia() na funcao main(), o
compilador precisa saber antecipadamente que tipo (int, double, etc)
essas funcoes retornam e quais os tipos dos argumentos que ela espera:

int getchar(void);
double potencia(double, double);

void main() {
	int c = getchar();
	...
	double x=2,y=3, z;
	z = potencia(x, y);
}

double potencia(double a, double b) {
	...
}


..`^'-_!+=^-_!.^-_!^.-_+^-_. 16 - ESPECIAL -_.+^-_.~`^'-_!.~`^'-_!+=/.,~`^'-_!

        Ueh... Especial!? sim... especial... aqui estah a participacao do
        leitor para duvidas deixadas pelos escritores do zine ou complemento
        sei lah.. qquer coisa q. tenha como fonte o leitor! isso mesmo, aqui
        estah a participacao do leitor, e neste zine veio uma coisa que me
        deixou contente, dois leitores me chamaram atencao qto ao ponto de
        sabermos qual o IP(instruction Pointer) ou se preferir Proxima
        instrucao! isso em assembly, dois leitores fizeram mandaram fontes
        e explicaram sobre o ponto q. deixei em aberto no zine! entao
        credito a eles! :))


                  Px_LARVA ESPOLETA
                           EAGLE'S POWER
                                   LaSt^WaRRioR


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..corte aqui..<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

.model small
.code
org 100h      ; gera .COM, lembra? :)
 
main:
    jmp     p                 ; pula o DB
    db      111 dup (0)       ; so para aumentar IP
p:
    even
    call    i1                ; guarda o valor de IP na pilha
                    
i1:
    pop     ax                ; poem o valor de IP em AX
    add     ax,4              ; + 4 p/ apontar p/ a prox. instrucao
    call    exibe_reg         ; o endereco exibido sera
                              ;  desta instrucao
    ret                       ; termina o programa e retorna ao 'dos'
 
exibe_reg:      ; rotina para exibir valor de registrador

    mov     dl,ah             ; coloca o valor de ah em DL para usar a funcao
                              ; 02 da int 21h!  
    and     dl,0f0h           ; faz um AND(e logico) de DL com 0f0h! 
    mov     cl,4              ; coloca 4 em CL geralmente usado como contador
    ror     dl,cl             ; faz uma rotacao de BITS com o valor de CL
    call    soma              ; funcao para somar!
    push    ax                ; salva o valor de AX
    mov     ah,2              ; funcao 02-imprime o q. estiver em DL na tela!
    int     21h               ; int do DOS
    pop     ax                ; restaura AX

    mov     dl,ah             ; coloca ah em DL
    and     dl,0fh            ; faz um e logic(AND) de DL com 0fh
    call    soma              ; soma
    push    ax                ; salva AX
    mov     ah,2              ; funcao 02...
    int     21h               ; int 21h do DOS
    pop     ax                ; restaura AX

    mov     dl,al             ; coloca al em dl
    and     dl,0f0h           ; faz um and com 0f0h
    ror     dl,cl             ; rotaciona DL com CL
    call    soma              ; soma
    push    ax                ; salva AX
    mov     ah,2              ; funcao 02....
    int     21h               ; int do DOS
    pop     ax                ; restaura AX

    mov     dl,al             ; coloca AL em DL
    and     dl,0fh            ; faz um and com 0fh
    call    soma              ; soma
    mov     ah,2              ; funcao 02...
    int     21h               ; int do DOS

    mov     dl,'h'            ; imprime h na tela usando a funcao 2 da int 21h
    int     21h               ; int do DOS

    ret                       ; retorna para a funcao q. chamou!
soma:
    cmp     dl,0ah            ; compara dl com 0ah
    jae     soma_l            ; se for igual ou maior pula para soma_l
    add     dl,'0'            ; adiciona 0
    ret                       ; retorna para a funcao q. chamou!
soma_l:
    add     dl,'A'-10         ; adiciona dl a 'A'(65)-10
    ret                       ; retorna para a funcao q. chamou!

end     main

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..corte aqui..<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

com esse programa, voce conseguirah ver o IP da proxima instrucao, ela serah
impressa na tela!
programa cedido por Eduardo Carvalho, qquer coisa mande msgs q. entro em
contato com ele....

Eduardo... Valeu pelo fonte! :))



.~`^'-_!+=/.,~`^'-_!.~`@$^-. 17 - PROCURA - SE ^,.~.~`^'-_!+=/.,~`^'-_!`^'-_!.

    HAHAahheheh Procura - se, ate parece propaganda oh! :)) mas tipo nao
    eh bem isso... eh o seguinte:
    Estamos precisando de alguem que programa em Java para poder dar auxilio
    no zine, tipo Java, Html, Visual Basic e C++, bom, se nao conseguirmos
    ninguem essas linguagens, vao ficar sem apoio, por isso, se alguem se
    interessar por uma dessas e estiver afim de participar, dah um tok ok!?
    valeu entao...

                  Px_LARVA ESPOLETA
                           EAGLE'S POWER
                                   LaSt^WaRRioR


.~`^'-_!+=_/.,~`^'-_!.~`@$^-. 18 - PROPAGANDAS ^,.~.~`^'-_!+=/.,~`^'-_!`^'-_!.

     Bom, este espaco eh reservado para propagandas, nao temos muita ateh
     agora, mas quem sabe!? ;))

     Eh o seguinte, a zine nao tem patriocinio nenhum, porem se alguem
     estiver afim de patricionar, ou alguma coisa do genero, basta entrar
     em contato conosco para conversarmos ok.!? bom, aos leitores nao se
     assustem, tipo isso ak. eh soh para no caso de alguem querer a propa-
     ganda da empresa, ou algo do genero, porem o zine, nao irah acabar
     por falta disto ok!? isso eh soh no caso de o zine crescer e quem
     sabe o pessoal querer fazer propagandas nele! :)) mas eh isso ai.
     se nao tiver tbm. sem problemas! :))

     Bom, entao vamos aas propagandas:

   * KEMEK BBS   :  (011) 861-4358 24hs. operando com 3 nodes!
   
    Uma BBS bem interessante e muito boa por sinal, nao perca e ligue lah 
    o mais rapido possivel eh muito legal mesmo... entao pessoal lah voce
    encontra arquivos variados, chat entre nodes e muito mais...! Liguem!
    Aos leitores do Zine, o sysop estarah liberando um tempo extra... tipo
    avisem - no que vc. eh leitor da zine WU TANG CLAN e pronto! :)) com
    isso estarah ganhando um(1) mes de assinatura gratuita com acesso full
    e 30(trinta) minutos diarios....



                  Px_LARVA ESPOLETA
                           EAGLE'S POWER
                                   LaSt^WaRRioR



	 ~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,

                                  FIM DA ZIN3

	 ~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,~`^'-_!+=/.,
